📜  JavaScript | handler.set() 方法

📅  最后修改于: 2022-05-13 01:56:23.946000             🧑  作者: Mango

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 及更高版本