亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript中的原型鏈深入理解

2019-11-20 21:03:00
字體:
來源:轉載
供稿:網友
要弄清楚原型鏈就要先弄清楚 function 類型,在javascript中沒有類的概念,都是函數,所以它是一門函數式的編程語言。類有一個很重要的特性,就是它可以根據它的構造函數來創建以它為模板的對象。在javascript中,函數就有2個功能

第一、 作為一般函數調用
第二、 作為它原型對象的構造函數 也就new()

我們來看一個例子
復制代碼 代碼如下:

function a(){
this.name = 'a';
}

當創建一個函數,它會發生什么呢?

第一、它會創建1個函數對象 也就是a 本身

第二、它會創建1個原型對象@a(用@來表示)

第三、函數對象會有一個prototype指針,它指向了對應的原型對象,這里就指向了@a

第四、@a對象中有一個construtor指針,指向它的構造函數,這里就指向了a

http://img.blog.csdn.net/20140222125611500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGpsMTU3MDEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

這個prototype屬性究竟有什么用呢?

其實prototype 屬性表示當前函數能夠控制的范圍(或者說它指明了當前函數是誰的構造函數),這里a就是@a原型對象的構造函數,所以我們會看見有這種寫法

復制代碼 代碼如下:

function a(){
this.name = 'a';
}

var a1 = new a();


這就和其他常見語言相似了,new 就是調用原型對象(通過prototype指針)里面構造函數(constructor)創建一個新的對象實例。

那么修改了prototype指向對象里面的屬性,也就影響了所有以它為模板創建的實例,我們可以這樣來驗證

復制代碼 代碼如下:

function a(){
this.name = 'a';
}

var a1 = new a();
a.prototype.age = 1;
alert(a1.age);

結果:1

那為什么a1對象可以直接訪問到age屬性呢?a1對象里面我并沒有定義age屬性啊,

那是因為所有實例里面都會有一個引用_proto_(在firfox,chrome下可以直接訪問,ie不支持)指向了這個原型,這里就是指向了@a,
復制代碼 代碼如下:

function a(){
this.name = 'a';
}

var a1 = new a();
alert(a1._proto_ == a.prototype)

結果:true

在訪問屬性的時候,會先在a1對象內部中尋找,如果沒有,就會順著_proto_指向的對象里面去尋找,這里會到@a中尋找,找到就返回值,沒有找到就返回undefined,用個成語來形容,就是順藤摸瓜嘛!

至此原型鏈的含義就出來了,由于原型對象也有一個_proto_指針,又指向了另一個原型,一個接一個,就形成了原型鏈。Object.prototype是最頂層的原型,所以如果修改了Object.prototype的屬性,那么就影響了所有的對象。

在來看一段代碼
復制代碼 代碼如下:

function a(){
this.name = 'a';
}

function b(){
this.age = 1;
}

b.prototype = new a();
alert(new b().name);

我們顯示的將b的原型指向了a的一個實例,然后,b的實例也可以訪問a的屬性了。這就是javascript的繼承了,那為什么b.prototype 指向的是a的一個實例,而不是直接指向a.prototype 呢?
復制代碼 代碼如下:

b.prototype = new a.prototype;

如果像上面這么寫,修改p.prototype中的屬性,那么a的原型也會改變了,相當于是子類修改了父類,并且子類和父類的屬性糅合在了一起,這顯然是不合適的。換句話說,b也成為了@a的構造函數,a,b成了平級的關系。

我們可以下一個定義:

函數a 繼承函數b 也就是讓函數a成為函數b原型的一個實例的構造函數,構造函數里面聲明的屬性是函數a自己的,原型實例里面的屬性就是繼承b的
復制代碼 代碼如下:

var $ = jQuery = function(selector,context){
//不可能在自己的構造函數中又一次構造自己,所以返回了另外一個構造函數的實例
return new init(selector,context);
}
jQuery.fn = jQuery.prototype = {
size:function(){
return this.length;
}
}

function init (selector,context){

}
init.prototype = jQuery.fn;;
}

這是jquery的一段源碼,我們在使用jquery的時候,并沒有使用new關鍵字,那它是如何構造對象的呢?

用上面的知識,可以解釋,jquery這里只是一個一般函數的調用,它返回了jquery原型的另外一個構造函數創建的對象,也就是new init()
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一区在线观看香蕉| 亚洲最大成人网色| 91欧美精品成人综合在线观看| 欧美激情亚洲激情| 亚洲午夜精品久久久久久性色| 欧美寡妇偷汉性猛交| 久久免费福利视频| 欧美俄罗斯性视频| 国产精品爱啪在线线免费观看| 欧美日韩中文在线观看| 欧美成在线观看| 亚洲精品国产福利| 亚洲奶大毛多的老太婆| 国产在线观看91精品一区| 欧美极品在线视频| 欧美最猛性xxxxx亚洲精品| 国产精品高潮视频| 日韩精品中文字幕有码专区| 综合av色偷偷网| 国产精品第一页在线| 91探花福利精品国产自产在线| 不卡av电影在线观看| 亚洲www在线| 亚洲一区二区久久| 中文字幕av一区中文字幕天堂| 欧美激情一区二区三区久久久| 精品久久久久久中文字幕一区奶水| 国产一区二区三区在线看| 国产成+人+综合+亚洲欧美丁香花| 久精品免费视频| 欧美人与物videos| 91在线观看免费高清完整版在线观看| 韩国三级电影久久久久久| 亚洲加勒比久久88色综合| 日韩欧美在线中文字幕| 91精品视频在线| 69久久夜色精品国产7777| 国产精品久久久久久久久久免费| 永久免费毛片在线播放不卡| 成人女保姆的销魂服务| 一区二区成人精品| 国产日韩在线免费| 岛国精品视频在线播放| 亚洲精品第一国产综合精品| 亚洲午夜未删减在线观看| 国产精品99导航| 久久久久中文字幕2018| 成人福利视频网| 亚洲自拍欧美色图| 欧美激情xxxx性bbbb| 永久555www成人免费| 最新国产精品亚洲| 成人中心免费视频| 91精品国产91久久久久久吃药| 国产精品欧美激情在线播放| 国产精品亚洲第一区| 亚洲最大福利网站| 中文字幕亚洲图片| 国产精品日韩一区| 深夜福利国产精品| 欧美精品18videosex性欧美| 91av视频在线| 国产亚洲欧美aaaa| 亚洲精品日韩欧美| 欧美性色xo影院| 国产精品国内视频| 欧美性xxxx极品高清hd直播| 欧美情侣性视频| 国产成人在线一区二区| 亚洲免费视频一区二区| 国产一区二区在线免费| 国产精品美女午夜av| 亚洲女人天堂网| 亚洲va欧美va国产综合剧情| 91免费观看网站| 中文字幕亚洲欧美在线| 亚洲国产精品一区二区三区| 日韩av免费网站| 97久久精品在线| 国产成人精品综合久久久| 国产亚洲精品久久久优势| 日韩av在线直播| 热久久这里只有精品| 久久综合色88| 色噜噜国产精品视频一区二区| 亚洲国产精品久久| 久久久国产成人精品| 亚洲欧美日韩成人| 亚洲精品美女久久久| 欧美日韩免费观看中文| 国产精品亚洲精品| 夜夜躁日日躁狠狠久久88av| 伊人久久久久久久久久久久久| 亚洲一区二区中文| 国产午夜精品麻豆| 国产国语videosex另类| 色七七影院综合| 色婷婷av一区二区三区在线观看| 精品国产视频在线| 91在线视频成人| 97福利一区二区| 国产精品丝袜一区二区三区| 欧美成人亚洲成人| 青草青草久热精品视频在线观看| 538国产精品视频一区二区| 亚洲女同精品视频| 久久久人成影片一区二区三区| 久久最新资源网| 久久天天躁夜夜躁狠狠躁2022| 国产成人精彩在线视频九色| 黑人巨大精品欧美一区免费视频| 丝袜美腿亚洲一区二区| 国产自摸综合网| 欧美精品在线第一页| 国产美女久久精品香蕉69| 国产精品都在这里| 美女视频黄免费的亚洲男人天堂| 亚洲男人天堂手机在线| 欧美精品精品精品精品免费| 91在线观看免费| 亚洲天堂第二页| 亚洲男女自偷自拍图片另类| 日本中文字幕久久看| 国产日韩欧美中文在线播放| 综合网日日天干夜夜久久| 2019中文字幕在线| 日韩电影视频免费| 国产精品成人久久久久| 日韩不卡中文字幕| 日韩av三级在线观看| 精品日本高清在线播放| 色噜噜狠狠狠综合曰曰曰| 国产精品免费一区二区三区都可以| 欧美中文字幕在线播放| 亚洲变态欧美另类捆绑| 一区国产精品视频| 国产一区二区在线免费视频| 国产精品爽爽爽| 成人欧美一区二区三区在线湿哒哒| 国产精品一区二区久久| 欧美最顶级丰满的aⅴ艳星| 欧美在线视频观看免费网站| 国产日韩精品入口| 日韩国产精品一区| 日韩资源在线观看| 午夜精品一区二区三区在线视| 欧美视频免费在线| 国产一区二区日韩精品欧美精品| 亲爱的老师9免费观看全集电视剧| 少妇激情综合网| 成人av在线天堂| 国产精品尤物福利片在线观看| 欧美激情精品久久久久久黑人| 欧美日韩美女在线| 中文精品99久久国产香蕉| 日韩免费观看网站| 国产精品视频不卡| 欧美高清视频在线播放| 一本一本久久a久久精品综合小说| 国产精品极品尤物在线观看| 亚洲精品网址在线观看| 欧美性猛交xxxxx免费看| 国产亚洲人成网站在线观看| 亚洲欧美精品中文字幕在线|