国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript---自己對(duì)原型鏈的小理解

Sanchi / 3244人閱讀

摘要:原型的作用通過構(gòu)造函數(shù)創(chuàng)建的對(duì)象,可以使用原型上的屬性和方法,即原型可以讓實(shí)例共享它的方法和屬性。

1、什么是原型?

原型是函數(shù)自帶的一個(gè)屬性prototype,該屬性的值指向一個(gè)對(duì)象 ( 因?yàn)榇娴氖菍?duì)象的指針 )。

2、原型的作用

通過構(gòu)造函數(shù)創(chuàng)建的對(duì)象,可以使用原型上的屬性和方法,即原型可以讓實(shí)例共享它的方法和屬性。

function Car(brand) { 
    this.brand = brand;
}

// 原型
Car.prototype.drive = function() {
    console.log("開車");
} 

// 創(chuàng)建對(duì)象(實(shí)例)
var x3 = new Car("BMW");
var glc300 = new Car("Benz");

// 兩個(gè)實(shí)例都可以訪問原型上的方法
x3.drive();
glc300.drive();


3、prototype

函數(shù)默認(rèn)就有的屬性,這個(gè)屬性指向原型(原型對(duì)象)。

4、__proto__

對(duì)象默認(rèn)就有的屬性,這個(gè)屬性也指向原型(原型對(duì)象)。

5、原型的稱呼問題

prototype 這個(gè)屬性, 我們稱之為原型屬性, 或者顯示原型
.__proto__ 這個(gè)屬性, 我們稱之為原型對(duì)象, 或者隱式原型

6、prototype和__proto__的區(qū)別

它們兩個(gè)是不同的屬性

prototype是函數(shù)的屬性,它存的是對(duì)象的指針,指向原型對(duì)象

函數(shù)中prototype的作用:

將來創(chuàng)建的實(shí)例對(duì)象的__proto__屬性會(huì)根據(jù)構(gòu)造函數(shù)的prototype屬性來定義。

__proto__是對(duì)象的屬性,它也指向原型

對(duì)象中__proto__的作用:

對(duì)象可以訪問__proto__屬性所指向的那個(gè)原型對(duì)象中的屬性和方法

7、constructor

所有原生的原型都有這個(gè)屬性,該屬性的值存的是構(gòu)造函數(shù)的指針(地址)

因?yàn)闃?gòu)造函數(shù).prototype 的值可以被改變,所以修改之后就不是原生原型了。

    function Car(brand) { 
        this.brand = brand;
    }

    // 原型
    Car.prototype.drive = function() {
        console.log("開車");
    } 

    // 創(chuàng)建對(duì)象(實(shí)例)
    var x3 = new Car("BMW");

    // 可以獲取對(duì)象的具體類型
    console.log(x3.constructor.name);    // 輸出Car

    // 動(dòng)態(tài)修改原型的屬性, 盡量不要這么干, 最好一次性在最初就定義好
    Car.prototype.drive = function() {
        console.log("飚車");
    }        
8、原型鏈

javascript中的對(duì)象都有一個(gè)內(nèi)置的proto屬性,這個(gè)屬性指向創(chuàng)建該對(duì)象的構(gòu)造函數(shù)的prototype(Fucntion.prototype-原型對(duì)象),這個(gè)原型對(duì)象也是對(duì)象,也會(huì)有自己的proto,指向它自己的原型對(duì)象,這樣直到某個(gè)對(duì)象的原型為null為止,這樣的一級(jí)一級(jí)的鏈結(jié)構(gòu)就稱為原型鏈。

  // 實(shí)例對(duì)象f的原型 指向 原型對(duì)象F.prototype
  f.__proto__   =>   F.prototype, 
  
  // 原型對(duì)象F.prototype的原型 指向 原型對(duì)象Object.prototype
  F.prototype.__proto__   =>   Object.prototype,
  
  // 原型對(duì)象Object.prototype的原型 指向 null
  Object.prototype.__proto__   =>   null 

原型鏈的作用就是用來實(shí)現(xiàn)繼承(繼承:對(duì)象可以使用不屬于自己的屬性或者方法);
當(dāng)訪問一個(gè)對(duì)象的屬性或者方法時(shí),首先會(huì)在對(duì)象的自身查找,
如果沒有,則根據(jù)該對(duì)象的proto屬性的指向,到該對(duì)象的原型對(duì)象上查找,
如果還沒有找到,就再根據(jù)原型對(duì)象的proto去查找,一直到Object.prototype為止。

舉個(gè)栗子

var arr = [];
console.log(arr.hasOwnProperty("push"));                 // false
console.log(Array.hasOwnProperty("push"));               // false
console.log(Array.prototype.hasOwnProperty("push"));     // true     
console.log(arr.push === Array.prototype.push);          // true

比如我們創(chuàng)建一個(gè)數(shù)組, 數(shù)組arr本身是沒有push方法的, push方法就是從數(shù)組的原型對(duì)象上繼承而來的.

最后是一張?jiān)?繼承結(jié)構(gòu)的圖

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80626.html

相關(guān)文章

  • 如何理解JavaScript原型原型鏈?

    摘要:之前有朋友問怎么去理解原型和原型鏈的問題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問怎么去理解原型和原型鏈的問題。這個(gè)問題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...

    xuexiangjys 評(píng)論0 收藏0
  • 如何理解JavaScript原型原型鏈?

    摘要:之前有朋友問怎么去理解原型和原型鏈的問題。理解原型鏈的小技巧將箭頭視作泛化子類到父類關(guān)系那么圖中所有的虛線將構(gòu)成一個(gè)繼承層級(jí),而實(shí)線表示屬性引用。原型鏈?zhǔn)菍?shí)現(xiàn)繼承的重要方式,原型鏈的形成是真正是靠而非。 之前有朋友問怎么去理解原型和原型鏈的問題。這個(gè)問題,在面試中,很多同學(xué)經(jīng)常都會(huì)遇到。這里給大家講講,方便大家記憶。 JavaScript的特點(diǎn)JavaScript是一門直譯式腳本...

    adie 評(píng)論0 收藏0
  • JavaScript 原型系統(tǒng)的變遷,以及 ES6 class

    摘要:一般我們對(duì)這種構(gòu)造函數(shù)命名都會(huì)采用,并把它稱呼為類,這不僅是為了跟的理念保持一致,也是因?yàn)榈膬?nèi)建類也是這種命名。由生成的對(duì)象,其是。這是標(biāo)準(zhǔn)的規(guī)定。本文的主題是原型系統(tǒng)的變遷,所以并沒有涉及和對(duì)原型鏈的影響。 概述 JavaScript 的原型系統(tǒng)是最初就有的語言設(shè)計(jì)。但隨著 ES 標(biāo)準(zhǔn)的進(jìn)化和新特性的添加。它也一直在不停進(jìn)化。這篇文章的目的就是梳理一下早期到 ES5 和現(xiàn)在 ES6,...

    chuyao 評(píng)論0 收藏0
  • 我所認(rèn)識(shí)的JavaScript作用域鏈和原型

    摘要:為了防止之后自己又開始模糊,所以自己來總結(jié)一下中關(guān)于作用域鏈和原型鏈的知識(shí),并將二者相比較看待進(jìn)一步加深理解。因此我們發(fā)現(xiàn)當(dāng)多個(gè)作用域相互嵌套的時(shí)候,就形成了作用域鏈。原型鏈原型說完了作用域鏈,我們來講講原型鏈。   畢業(yè)也整整一年了,看著很多學(xué)弟都畢業(yè)了,忽然心中頗有感慨,時(shí)間一去不復(fù)還呀。記得從去年這個(gè)時(shí)候接觸到JavaScript,從一開始就很喜歡這門語言,當(dāng)時(shí)迷迷糊糊看完了《J...

    Bmob 評(píng)論0 收藏0
  • javascript-從toString方法在判斷復(fù)雜數(shù)據(jù)類型上的妙用,引申到對(duì)原型鏈的理解

    摘要:所以,當(dāng)我們使用時(shí),不能進(jìn)行復(fù)雜數(shù)據(jù)類型的判斷,因?yàn)樗{(diào)用的是,雖然也繼承自,但在上重寫了,而我們通過實(shí)際上是通過原型鏈調(diào)用了。 關(guān)于 toString 方法在有關(guān)js的開發(fā)中使用應(yīng)該是相當(dāng)廣泛的,這兩天在看jQuery的源碼,從 toString 本身了解與鞏固了不少知識(shí),寫出來與大家一同分享。首先先上一段代碼: var arr=[1,2,3]; toString.call(arr)...

    sean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<