国产探花免费观看_亚洲丰满少妇自慰呻吟_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 將共享屬性遷移到原型中去的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临澧县| 永康市| 阳朔县| 莎车县| 施秉县| 米泉市| 东城区| 海阳市| 黄浦区| 革吉县| 上高县| 保定市| 蒙自县| 开封市| 贡觉县| 广灵县| 东兴市| 永靖县| 枞阳县| 永修县| 渝北区| 庆城县| 临夏县| 昌宁县| 彭阳县| 迭部县| 云南省| 双峰县| 莆田市| 黄骅市| 文山县| 浦江县| 北海市| 祁连县| 惠东县| 青田县| 兰考县| 通河县| 临安市| 普陀区| 出国|