【发布时间】:2017-05-23 13:31:30
【问题描述】:
我无法完全理解 Object.defineProperty 如何处理 dom 元素。
在普通的 javascript 对象上,它就像一个魅力
var obj={name: 'john'};
Object.defineProperty(obj, 'name', {
get: function(){
console.log('get value')
},
set:function(newValue){
console.log('set value '+newValue);
},
configurable: true
});
线
obj.name='Tom';
将打印到控制台“设置值 Tom”并将 obj.name 更改为 Tom。
当我在 dom 元素上尝试它时(例如,在复选框的属性上),它会在控制台中打印新值,但不会更改属性的值:
var box = document.getElementById('checkBox1');
Object.defineProperty(box, 'checked', {
set: function (newValue) {
console.log('set value '+newValue)
},
configurable: true
});
单击未选中的复选框将输出“已选中设置值”。 但是屏幕上没有任何变化,在对象框中也没有。 复选框的设置器只是停止工作。就像我“禁用”了它一样。
我哪里错了?
【问题讨论】:
标签: javascript dom ecmascript-6