Object.defineProperty()vs Object.prototype.property vs Object.property何时使用什么?

时间:2015-08-04 18:49:38

标签: javascript object properties prototype defineproperty

有人可以给我一个很好的用例,说明何时使用Object.defineProperty(),Object.prototype.property和Object.property。

1 个答案:

答案 0 :(得分:2)

想象一下,我们有一个person对象,其age属性的值为20

  

Object.defineProperty()方法直接定义一个新属性   对象,或修改对象上的现有属性,然后返回   对象。

     

Object.defineProperty(obj, prop, descriptor)

这与普通赋值运算符有何不同?

它使您可以更好地控制创建属性而不是标准赋值(person.age = 25)。除了设置值之外,您还可以指定是否可以删除或编辑属性以及其他更详细的内容Object.defineProperty() page

一些例子

要向此人添加无法使用赋值运算符更改的名称字段:

Object.defineProperty(person, "name", {value: "Jim", writable: false})

或更新年龄属性并使其可编辑:

Object.defineProperty(person, "age", {value: 25, writable: true})

Object.prototype.property和Object.property都指访问对象的属性。这就像使用age访问person对象的person.age属性一样(您也可以使用person["age"]