定义与分配

时间:2013-04-13 15:33:37

标签: javascript

定义。要定义属性,可以使用

等函数
  

Object.defineProperty(obj,propName,propDesc)

此函数的主要目的是向obj添加一个自己的(直接)属性,其属性(可写等,见下文)由propDesc指定。次要目的是更改属性的属性,包括其值。

分配。要分配属性,请使用

等表达式
obj.prop = value

这种表达的主要目的是改变价值。在执行该更改之前,JavaScript参考了obj的原型链[1]:如果在obj或其中一个原型中有某个setter,则赋值是对该setter的调用。赋值具有创建属性(如果它不存在)的副作用,但是 - 作为obj的自身属性,具有默认属性。

但这两种方法的区别和后果是什么?

1 个答案:

答案 0 :(得分:1)

基本上,Object.defineProperty(obj, propName, propDesc)使您可以更好地控制对象的定义属性,最重要的是,如何访问每个属性。 obj.prop = value无法控制以后(定义之后)如何访问该属性。

重要提示:Object.defineProperty()比简单属性定义慢很多,因此,除非您需要控制以后如何访问属性,否则请不要使用Object.defineProperty()

Have a look at this article on the same issue, but with a specific example.