Reflect.set() 方法

admin發表於2019-05-26

關於Proxy更多內容可以參閱JavaScript Proxy和Reflect一章節。

此方法可以設定指定物件的屬性,比如為物件新增新屬性或者修改原有屬性的值。

返回一個布林值用來說明新增或者修改操作是否成功。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
Reflect.set(target, propertyKey, value[, receiver])

引數解析:

(1).target:必需,獲取屬性的目標物件。

(2).propertyKey:必需,屬性名稱。

(3).value:必須,屬性值。

(4).receiver:可選,如果指定屬性部署了setter訪問器,那麼此訪問器的this就會指向receiver。

特別說明:如果target不是一個物件,將會報錯。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var antzone = {
  webName: "螞蟻部落",
  url:"www.softwhy.com",
}
Reflect.set(antzone, "age", 4);
console.log(antzone.age);

上面的程式碼可以為antzone物件新增一個age屬性。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var antzone = {
  webName: "螞蟻部落",
  url:"www.softwhy.com",
  set age(val) { _age = val * this.num; },
  get age(){return _age}
}
Reflect.set(antzone, "age", 2, { num: 4 });
console.log(antzone.age)

可以看到,如果是一個setter訪問器,此訪問器的this是指向第四個引數的。

相關文章