某些项目使用Object.create()
或Object.defineProperties()
功能。我不知道是推荐吗?是什么区别
x = Object.create(null);
VS
x = {}
并且
x = {}
x.__proto__.hello = function() {
console.log("hello");
}
vs
x = Object.create(null);
Object.defineProperty(x, "hello", {
value: function() {
console.log("hello");
}
});
defineProperty/create
对我来说似乎非常冗长和冗长。何时/为何使用它们?也许好的方法是强制执行getter / setter / overriding属性?
答案 0 :(得分:0)
存在巨大差异。看看文档!
Object.create
确实会创建一个继承自第一个参数null
的对象。相比之下,{}
- 或new Object()
- 会创建一个继承自Object.prototype
的新对象。__proto__
是非标准的,不应使用。但是,在您的情况下,您只需执行Object.prototype.hello = function() {…};
。永远不要用可枚举的属性扩展该对象,永远不要!Object.defineProperty
确实在具有特殊描述符对象的对象上定义属性。 enumerable
,configurable
和writable
属性默认为false
,这意味着您无法以delete x.hello
为例,或指定任何其他值。< / LI>
您的第一个代码段创建一个普通对象,该对象从hello
继承Object.prototype
方法,而您的第二个代码段创建一个从无任何内容继承并具有不可编辑的hello
属性的对象。我没有看到太多相关性。