Object.create(null)

发布于:2021-01-29 15:43:55

0

118

0

JavaScript 编程语言

JavaScript或实际上是任何编程语言中最有趣的部分之一是,大量的小技巧和怪癖使该语言更加有趣。我最近学到了一个不错的事实Object.create:使用null 作为创建超级普通的词典的唯一参数!

Object.create 对于原型创建一直是一个很棒的实用程序。虽然这是很好的,对象与创建Object.create 已__proto__和继承Object 可控制的特性。如果您只是希望字典不易于受到外界的操纵该怎么办?您可以使用Object.create(null):

let dict = Object.create(null);

// dict.__proto__ === "undefined"
// No object properties exist until you add them

由于没有原型,因此无法从外部操纵您的Object,它尽可能保留字典的原始性!比较一下Object.create({}):

let obj = Object.create({});

// obj.__proto__ === {}
// obj.hasOwnProperty === function

Object.prototype.someFunction = () => {};

// obj.someFunction === () => {};
// dict.someFunction === undefined

传递Object.create 空对象允许通过来添加属性Object.prototype.customPropName,而您可能并不总是想要这样。

直到最近我才知道这个技巧,但是以后会用到很多!