第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

原型中的 Setter 屬性與數(shù)據(jù)屬性

原型中的 Setter 屬性與數(shù)據(jù)屬性

POPMUISE 2023-07-29 14:51:56
有人可以解釋以下行為嗎?var p = {  name: "John",  set age(value) {    console.log("Age set to", value);  }}var obj = {};Object.setPrototypeOf(obj, p);obj.name = "Jill"; // Doesn't alter the name on prototype, creates a new property on objobj.age = 22; // Calls the setter on prototype為什么分配 to 會age調(diào)用原型上的 setter,而分配 toname會在 上創(chuàng)建新屬性obj?
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

這就是 JavaScript 的工作原理。當=用于分配屬性時,引擎將在對象的原型鏈中查找第一個與屬性名稱匹配的屬性描述符。如果找到這樣的描述符,并且該描述符是訪問器(即,具有 setter 和/或 getter),則將調(diào)用該 setter。否則,如果描述符是數(shù)據(jù)描述符,則沒有 setter,新值將分配給實例自己的屬性。

  1. 斷言:IsPropertyKey(P) 為 true。

  2. 如果 ownDesc 未定義,則

    1. 將 ownDesc 設置為 PropertyDescriptor { [[Value]]: undefined, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true }。

    2. 返回 ?父級。[[設置]](P、V、接收器)。這就是遞歸調(diào)用。`ownDesc` 設置為包含此屬性名稱的描述符的第一個祖先。

    3. 讓父母成為?O.[[GetPrototypeOf]]()。

    4. 如果父級不為空,則

    5. 別的,

  3. 如果 IsDataDescriptor(ownDesc) 為 true,則

    1. 斷言:接收者當前沒有屬性 P。

    2. 返回 ?CreateDataProperty(接收器,P,V)。

    3. 如果 IsAccessorDescriptor(existingDescriptor) 為 true,則返回 false。

    4. 如果existingDescriptor.[[Writable]]為假,則返回假。

    5. 令 valueDesc 為 PropertyDescriptor { [[Value]]: V }。

    6. 返回 ?接收者。[[DefineOwnProperty]](P, valueDesc)。使用數(shù)據(jù)描述符,實例(即“接收器”)會獲取分配給它的新值,無論描述符在原型鏈中的哪個位置找到。

    7. 如果 ownDesc.[[Writable]] 為 false,則返回 false。

    8. 如果 Type(Receiver) 不是 Object,則返回 false。

    9. 讓現(xiàn)有描述符是?接收者。[[GetOwnProperty]](P)。

    10. 如果existingDescriptor不是未定義的,那么

    11. 別的,

  4. 斷言:IsAccessorDescriptor(ownDesc) 為 true。

  5. 設 setter 為 ownDesc.[[Set]]。

  6. 如果 setter 未定義,則返回 false。

  7. 履行 ?呼叫(二發(fā)手、接發(fā)手、“V”)。否則,調(diào)用 setter。

  8. 返回真。


查看完整回答
反對 回復 2023-07-29
?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

當您分配給屬性時,它首先在原型鏈中搜索 setter。如果找到 setter,則簡單地執(zhí)行它。

如果沒有找到 setter,則會在對象本身中創(chuàng)建或更新普通屬性。分配屬性永遠不會單獨分配給繼承的屬性(setter 可以這樣做)。


查看完整回答
反對 回復 2023-07-29
  • 2 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號