JavaScript Object.prototype.__defineSetter__() 方法
__defineSetter__() 方法用于将对象的属性绑定到一个函数,当尝试设置指定的属性时将调用该函数。建议使用对象初始化器语法或Object.defineProperty() API而不是此方法,因为它已被弃用。
句法:
obj.__defineSetter__( prop, fun )
参数:此函数接受上面给出的两个参数,如下所述:
- prop:它是一个字符串,其中包含要绑定到给定函数的属性的名称。
- fun:当尝试设置指定属性时调用的函数。函数的val参数可用于为保存试图分配给prop的值的变量指定别名。
返回值:此方法返回未定义。
以下示例说明了 __defineSetter__() 方法的用法:
示例 1:使用 __defineSetter__() 方法
Javascript
let tmpObj = {};
tmpObj.__defineSetter__('setValue', function(val) {
this.currentValue = val;
});
obj.setValue = 10;
console.log(tmpObj.setValue);
console.log(tmpObj.currentValue);
Javascript
// Using the set operator
var obj1 = {
set setValue(val) { this.currentValue = val; }
};
obj1.setValue = 10;
console.log(obj1.setValue);
console.log(obj1.currentValue);
// Using Object.defineProperty
var obj2 = {};
Object.defineProperty(obj2, 'value', {
set: function(val) {
this.currentValue = val;
}
});
obj2.value = 2;
console.log(obj2.value);
console.log(obj2.currentValue);
输出:
undefined
10
示例 2:使用对象初始值设定项语法和 Object.defineProperty() API 的标准兼容方式
Javascript
// Using the set operator
var obj1 = {
set setValue(val) { this.currentValue = val; }
};
obj1.setValue = 10;
console.log(obj1.setValue);
console.log(obj1.currentValue);
// Using Object.defineProperty
var obj2 = {};
Object.defineProperty(obj2, 'value', {
set: function(val) {
this.currentValue = val;
}
});
obj2.value = 2;
console.log(obj2.value);
console.log(obj2.currentValue);
输出:
undefined
10
undefined
2