国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript 將共享屬性遷移到原型中去的實現方法

2019-11-20 09:07:23
字體:
來源:轉載
供稿:網友

當我們用一個構造函數創建對象時,其屬性就會被添加到this中去。并且被添加到this中的屬性實際上不會隨著實體發生改變,這時,我們這種做法顯得會很沒有效率。例如:

function her(){  this.name = 'Anna';}

這意味著每次我們new her()創建一個實例對象的時候都會生成一個全新的name屬性,并在內存中擁有屬于該屬性自己的存儲空間。而事實上,我們可以將name屬性添加到原型上去,這樣一來所有實例都可以共享這個name屬性了:

function her(){}her.prototype.name = 'Anna';

這樣一來,我們再用new her()創建對象的時候,name屬性就不再是新對象的私有屬性了,而是被添加到該對象的原型中去了。雖然這種做法會很有效率,但這也是針對實例對象中的不可變屬性而言的,這是一定的不然的話改一下這個屬性,所有被創建的新對象的這個屬性都會被改變,這可不是我們想要的啊~~~。對象的公有屬性尤其適合這種方法。

下面,我們來改進以前的一個例子:

function her(){};her.prototype.name = 'Anna';her.prototype.toString = function(){  return this.name;}function his(){};his.prototype = new her();his.prototype.constructor = his;his.prototype.sex = 'women';

如您所見,通常我們在進行原型對象擴展之前,我們現完成了相關繼承工作的構建,否則his.prototype中后續新的屬性方法有可能會抹掉繼承來的東西。

function child(f, m){  this.eat = f;  this.don = m;}child.prototype = new his();child.prototype.constructor = child;child.prototype.name = 'Jok';child.prototype.fun = function(){  return this.eat + this.don}

如您所見,實際上調用toString()這個方法的區別僅僅在于幕后的少量操作。主要區別也就是屬性,方法的查找工作將更多地發生在her.prototype中。

以上這篇javascript 將共享屬性遷移到原型中去的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石阡县| 菏泽市| 稻城县| 太白县| 望城县| 呼玛县| 信阳市| 将乐县| 云南省| 顺义区| 靖安县| 浦北县| 东安县| 丹东市| 财经| 韩城市| 铁岭市| 雅安市| 航空| 安泽县| 仁化县| 定安县| 灵武市| 迭部县| 饶平县| 柳林县| 波密县| 延川县| 平原县| 临澧县| 凉城县| 玉树县| 陆河县| 龙泉市| 洛川县| 轮台县| 梧州市| 长寿区| 荆州市| 礼泉县| 马尔康县|