定义与分配

Definition versus assignment

本文关键字:分配 定义      更新时间:2023-09-26

定义要定义属性,可以使用等函数

Object.defineProperty(obj,propName,propDesc(

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

任务要分配给属性,可以使用等表达式

obj.prop = value

这种表达式的主要目的是更改值。在执行更改之前,JavaScript会参考obj的原型链[1]:如果在obj中或其原型中的某个地方有一个setter,那么赋值就是对该setter的调用。赋值的副作用是创建一个不存在的属性——作为obj的一个自己的属性,使用默认属性。

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

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

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

请看一看这篇关于同一问题的文章,但要有一个具体的例子。