使用Object.create(null)产生的对象是一个没有原型的对象,相对于直接使用 {} 产生的对象,后者会产生一个原型链接到Object.prototype,前者相当于一个纯净的map不会有Object.prototype的属性或者方法污染,自然前者遍历的时候也不需要使用hasOwnProperty来判断当前属性是否为自有的。
Object.create函数的作用就是创建一个对象,并且让对象的原型为函数提供的参数。null作为一个对象,它是Object.prototype的原型,通过下面的代码可以验证。而现有的很多方法例如toString、valueOf等都是来自于Object.prototype,因此如果对象的原型时null,那么这个对象将不包含任何Object.prototype的函数和变量。
Object.prototype.__proto__ === null
原文地址:https://www.cnblogs.com/lee88688/p/11225048.html
时间: 2024-11-04 04:26:02