JavaScript | handler.set() 方法
JavaScript 中的handler.set()方法是设置属性值的陷阱。此方法返回一个布尔值。
句法:
const p = new Proxy(target, {
set: function(target, property, value, receiver) {
}
});
参数:此方法接受上面提到的四个参数,如下所述:
- target:此参数保存目标对象。
- property:此参数保存属性的名称或符号。
- value:此参数保存属性的新值。
- 接收者:此参数保存分配最初指向的对象。
返回值:此方法总是返回一个布尔值。
下面的示例说明了 JavaScript 中的handler.set() 方法:
示例 1:
javascript
function gfg() {
this.users = "Millions";
}
const handler1 = {
set(obj, prop, value) {
if ((prop === 'users') && ((value % 2) !== 0)) {
console.log('GEEKSFORGEEKS : Computer Science Portal');
} else {
return Reflect.set(...arguments);
}
}
};
const gfg1 = new gfg();
const proxy1 = new Proxy(gfg1, handler1);
proxy1.users = 1;
console.log(proxy1.users);
javascript
const p = new Proxy({}, {
set: function(target, prop, value, receiver) {
target[prop] = value;
console.log('property set: ' + prop + ' = ' + value);
return true;
}
})
console.log('a' in p);
p.a = 10;
console.log('a' in p);
console.log(p.a);
var x = { foo: 1 };
var proxy = new Proxy(x, {
set: function(target, name, value, proxy) {
target[name] = value+" --> "+ value.toUpperCase();
}
});
proxy.foo = 'geeksforgeeks';
console.log(x.foo);
输出:
"GEEKSFORGEEKS : Computer Science Portal"
"Millions"
示例 2:
javascript
const p = new Proxy({}, {
set: function(target, prop, value, receiver) {
target[prop] = value;
console.log('property set: ' + prop + ' = ' + value);
return true;
}
})
console.log('a' in p);
p.a = 10;
console.log('a' in p);
console.log(p.a);
var x = { foo: 1 };
var proxy = new Proxy(x, {
set: function(target, name, value, proxy) {
target[name] = value+" --> "+ value.toUpperCase();
}
});
proxy.foo = 'geeksforgeeks';
console.log(x.foo);
输出:
false
"property set: a = 10"
true
10
"geeksforgeeks --> GEEKSFORGEEKS"
支持的浏览器: handler.set() 方法支持的浏览器如下所列。
- 谷歌浏览器 49 及更高版本
- 边缘 12 及以上
- 火狐 18 及以上
- Opera 36 及以上
- Safari 10 及更高版本