如何实现一个深拷贝

深拷贝的简单实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function cloneDeep(source, hash = new WeakMap()) {
if (source === null) return null;
if (source === undefined) return undefined;
if (source instanceof RegExp) return new RegExp(source);
if (source instanceof Date) return new Date(source);
if (typeof source !== "object") return source;
if (hash.has(source)) return hash.get(source);
let target = new source.__proto__.constructor;
hash.set(source, target);
for (let key in source)
if (Object.prototype.hasOwnProperty.call(source, key))
target[key] = cloneDeep(source[key], hash);
return target;
}
阅读更多...

HTML

DOCTYPE

DOCTYPE 是一种标准通用标记语言(SGML)的文档类型声明,目的是告诉浏览器的解析器要使用什么样的文档类型定义(DTD)来解析文档。目前浏览器的文档解析类型有三种:

  • Quirks mode(怪异模式):在怪异模式下,排版会模拟 Navigator 4 与 Internet Explorer 5 的非标准行为。如果没有声明DOCTYPE,默认就是这个模式。
  • Almost standards mode(接近标准模式):只有少数的怪异行为被实现。
  • Standard mode(标准模式):浏览器使用 W3C 的标准解析渲染页面。

<!DOCTYPE>声明必须是 HTML 文档的第一行,位于 html 标签之前。HTML5只规定了一种格式<!DOCTYPE html>

阅读更多...

原型与原型链

谈谈你对 JS 原型和原型链的理解?

JS 原型是指为其它对象提供共享属性访问的对象。在创建对象时,每个对象都包含一个隐式引用指向它的原型对象或者 null,原型也是对象,因此它也有自己的原型,这样构成一个原型链。

阅读更多...
  • Copyrights © 2020-2021 苏御
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信