原型鏈上的get與set訪問器屬性
關於訪問器屬性基本用法可以參閱JavaScript get set訪問器屬性一章節。
訪問器屬性也可以用在原型鏈上,表現與資料屬性有所不同。
首先看一段資料屬性的例子,也許很多馬虎的朋友也沒有注意到其中的一些特點。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function Antzone(){ this.webName="螞蟻部落"; } Antzone.prototype.url="http://www.softwhy.com"; let antzone=new Antzone(); console.log(antzone.url);
程式碼執行效果截圖如下:
物件antzone的url屬性繼承自建構函式的原型物件。
關於原型可以參閱JavaScript prototype 原型一章節。
現在我們修改一下url屬性值,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function Antzone(){ this.webName="螞蟻部落"; } Antzone.prototype.url="http://www.softwhy.com"; let antzone=new Antzone(); antzone.url="baidu.com"; console.log(antzone.hasOwnProperty("url"));
程式碼執行效果截圖如下:
程式碼分析如下:
(1).url是一個資料屬性,位於原型鏈,被物件例項所繼承。
(2).當物件例項修改屬性值的時候,實質上會在物件例項自身新增一個對應的屬性,並賦值。
所以不要想當然認為屬性依然繼承自原型鏈,進行上述類似操作的時候一定要特別注意。
關於hasOwnProperty方法可以參閱JavaScript hasOwnProperty()一章節。
如果原型鏈上的屬性是訪問器屬性,那麼將有不同的表現。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function Antzone(){ this.webName="螞蟻部落"; } Antzone.prototype._url="http://www.softwhy.com"; Object.defineProperty(Antzone.prototype, 'url', { get: function() { return this._url; }, set: function(url) { this._url=url; } }); let antzone=new Antzone(); antzone.url="baidu.com"; console.log(antzone.hasOwnProperty("url"));
程式碼執行效果截圖如下:
可以看到如果原型鏈上的屬性是訪問器屬性,那麼不會在物件例項上新增屬性。
如果我們需要保護物件上指定屬性不受類似操作的影響,可以將原型鏈上對應的屬性設定為訪問器屬性。
相關文章
- JavaScript get set 訪問器屬性JavaScript
- javascript 物件屬性的get set訪問器寫法JavaScript物件
- C#中類的屬性訪問器--get和set分析C#
- 私有屬性的Get Set 與 Public
- c# public_protected_private許可權訪問符_屬性訪問器get_setC#
- javascript get和set訪問器JavaScript
- vue3計算屬性的可寫屬性 set 與 getVue
- JavaScript物件的資料屬性與訪問器屬性JavaScript物件
- 深入理解物件的資料屬性與訪問器屬性物件
- c#屬性訪問器C#
- c#索引訪問器再探_get_set之訪問控制存取C#索引
- c# tcbs屬性訪問器C#
- lombok get/set 與 JavaBean get/setLombokJavaBean
- Vue之computed(計算屬性)詳解get()、set()Vue
- 同時重寫屬性的get和set方法系統報錯問題處理
- Python 中的屬性訪問與描述符Python
- 【翻譯】Chrome 43 部分更新:現在 DOM 的屬性將會在原型鏈上Chrome原型
- 一次性搞懂js中的原型與原型鏈JS原型
- Set size 屬性
- 原型與原型鏈原型
- 理解JavaScript的原型屬性JavaScript原型
- outerDocument訪問外部屬性方法
- 淺談對屬性描述符__get__、__set__、__delete__的理解delete
- JavaScript訪問物件的屬性和方法JavaScript物件
- JS中的原型與原型鏈JS原型
- JavaScript原型與原型鏈JavaScript原型
- 原型物件與原型鏈原型物件
- JavaScript 原型 與 原型鏈JavaScript原型
- javascript——原型與原型鏈JavaScript原型
- JS 原型與原型鏈JS原型
- JS原型與原型鏈JS原型
- 手把手帶你用原生js實現css屬性的set和getJSCSS
- cassandra get set同步問題
- js訪問物件屬性的2個方法JS物件
- 一、訪問物件屬性和方法的操作物件
- javascript之原型與原型鏈JavaScript原型
- JavaScript中原型與原型鏈JavaScript原型
- JavaScript原型與原型鏈分析JavaScript原型