定义与分配
Definition versus assignment
定义要定义属性,可以使用等函数
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()
。
请看一看这篇关于同一问题的文章,但要有一个具体的例子。
相关文章:
- 服务变量分配了数据,但在访问时始终未定义
- 理解Javascript中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配
- 为什么对象的属性在分配给对象时未定义
- 函数在分配给变量时未定义
- Javascript是否为具有未定义值的变量分配32位内存
- 重新分配变量和重新定义之间的性能差异
- 更改自定义绑定处理程序,以便使用IIFE进行分配
- jQuery将值分配给数组,给出错误未定义的变量
- 无法分配给定义为可写的属性
- node.js process.env:将 process.env 属性分配给字符串类型中的未定义结果
- 如何将值分配给未定义
- 纯JavaScript onclick在分配函数作用域结束后变为未定义
- JS-无法将AJAX的响应分配为自定义变量
- 为元素分配属性的自定义指令
- 可以't在自定义dojo小部件内分配onclick事件
- 分配给变量的javascript函数调用返回未定义的结果
- 无法设置属性'X'在尝试分配值时的未定义
- 使用名称空间将原型对象分配给对象中的匿名函数,这是未定义的
- 局部变量是未定义的,尽管我在javascript中为它分配了一个值
- 只分配定义的属性