原型鏈上的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
- C#中類的屬性訪問器--get和set分析C#
- 私有屬性的Get Set 與 Public
- vue3計算屬性的可寫屬性 set 與 getVue
- JavaScript物件的資料屬性與訪問器屬性JavaScript物件
- 深入理解物件的資料屬性與訪問器屬性物件
- lombok get/set 與 JavaBean get/setLombokJavaBean
- Vue之computed(計算屬性)詳解get()、set()Vue
- Set size 屬性
- 淺談對屬性描述符__get__、__set__、__delete__的理解delete
- JavaScript訪問物件的屬性和方法JavaScript物件
- 一次性搞懂js中的原型與原型鏈JS原型
- 原型與原型鏈原型
- js訪問物件屬性的2個方法JS物件
- 一、訪問物件屬性和方法的操作物件
- JS中的原型與原型鏈JS原型
- JavaScript原型與原型鏈JavaScript原型
- 原型物件與原型鏈原型物件
- JavaScript 原型 與 原型鏈JavaScript原型
- javascript——原型與原型鏈JavaScript原型
- JS 原型與原型鏈JS原型
- Python 訪問和設定私有屬性Python
- JavaScript中原型與原型鏈JavaScript原型
- 原型、原型鏈與繼承原型繼承
- javascript之原型與原型鏈JavaScript原型
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- 從問題入手,深入瞭解JavaScript中原型與原型鏈JavaScript原型
- 課時45:魔法方法:屬性訪問
- JS原型與原型鏈圖解JS原型圖解
- 7. JavaScript 原型與原型鏈JavaScript原型
- JavaScript系列之原型與原型鏈JavaScript原型
- 再解 JavaScript 原型與原型鏈JavaScript原型
- 教你如何直接訪問php例項物件的private屬性PHP物件
- Python中訪問私有屬性和私有方法Python
- 屬性動畫與差值器動畫
- 深入理解JS原型與原型鏈JS原型
- 深入JavaScript系列(六):原型與原型鏈JavaScript原型
- JS 原型鏈查詢 (上)JS原型