溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

js中什么指的是原型鏈

發(fā)布時(shí)間:2020-11-23 13:58:13 來源:億速云 閱讀:152 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了js中什么指的是原型鏈,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象,原型對(duì)象都包含一個(gè)指向構(gòu)造函數(shù)的指針,而實(shí)例都包含指向原型對(duì)象內(nèi)部的指針。我們讓原型對(duì)象的實(shí)例(1)等于另一個(gè)原型對(duì)象(2),

此時(shí)原型對(duì)象(2)將包含一個(gè)指向原型對(duì)象(1)的指針,

再讓原型對(duì)象(2)的實(shí)例等于原型對(duì)象(3),如此層層遞進(jìn)就構(gòu)成了實(shí)例和原型的鏈條,這就是原型鏈的概念

原型鏈

每個(gè)構(gòu)造函數(shù)都有原型對(duì)象,每個(gè)構(gòu)造函數(shù)實(shí)例都包含一個(gè)指向原型對(duì)象的內(nèi)部指針(proto),如果我們讓第一個(gè)構(gòu)造函數(shù)的原型對(duì)象等于第二個(gè)構(gòu)造函數(shù)的實(shí)例,結(jié)果第一個(gè)構(gòu)造函數(shù)的原型對(duì)象將包含一個(gè)指向第二個(gè)原型對(duì)象的指針,再然第三個(gè)原型對(duì)象等于第一個(gè)構(gòu)造函數(shù)的實(shí)例,這樣第三個(gè)原型對(duì)象也將包含指向第一個(gè)原型對(duì)象的指針,以此類推,就夠成了實(shí)例于原型的鏈條,這就是原型鏈的基本概念

function One(){
 }
 function Two(){
 }
 function Three(){
 }
 Two.prototype=new One();
 Three.prototype=new Two();
 var three=new Three();
 console.log(three);
 console.log(three.__proto__===Three.prototype) //true
 console.log(three.__proto__.__proto__===Two.prototype) //true
 console.log(three.__proto__.__proto__.__proto__===One.prototype)  //true
 console.log(three.__proto__.__proto__.__proto__.__proto__===Object.prototype)  //true

在對(duì)象實(shí)例中,訪問對(duì)象原型的方法

1、使用proto屬性

此屬性是瀏覽器支持的一個(gè)屬性,并不是ECMAScript里的屬性

2.Object.getPrototypeOf

3.使用constructor.prototype的方法

對(duì)于不支持proto的瀏覽器,可以使用constructor,訪問到對(duì)象的構(gòu)造函數(shù),在用prototype訪問到原型

使用原型鏈解釋ANUGLAR作用域

在開發(fā)過程中,我們可能會(huì)出現(xiàn)控制器的嵌套,看下面這段代碼:

  <div ng-controller="OuterCtrl">
        <span>{{a}}</span>
         <div ng-controller="InnerCtrl">
            <span>{{a}}</span>
         </div>
     </div>
    <script>
    function OuterCtrl($scope) {
    $scope.a = 1;
    }
    function InnerCtrl($scope) {
    }
    </script>

我們可以看到界面顯示了兩個(gè)1,而我們只在OuterCtrl的作用域里定義了a變量,但界面給我們的結(jié)果是,兩個(gè)a都有值,現(xiàn)在自控制器里的a是從父控制器里繼承過來的

我們可以父子級(jí)的作用域看成兩個(gè)原型對(duì)象,其中一個(gè)原型對(duì)象繼承另一個(gè)原型對(duì)象的實(shí)例

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享js中什么指的是原型鏈內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI