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

dom*_*dom 5 javascript prototype properties object defineproperty

有人能给我一个关于何时使用 Object.defineProperty()、Object.prototype.property 和 Object.property 的好用例吗?

Mik*_*e G 5

试想一下,我们有一个person物体与age具有的价值属性20

Object.defineProperty() 方法直接在对象上定义新属性,或修改对象上的现有属性,并返回该对象。

Object.defineProperty(obj, prop, descriptor)

这与普通的赋值运算符有什么不同?

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

几个例子

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

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

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

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

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

  • 是的,请把它放在你的答案中,这就是 OP 想知道的:-) (2认同)