JS原型對象通俗”唱法”

來源:互聯網
上載者:User

1.關於原型對象的重要知識點

首先要知道一個很重要的知識點,一句話:所有對象都有原型對象.

2. 對比其他語言的理解

原型對象,就是其它語言中的類中的靜態屬性和靜態方法,總是是靜態-static就對了.原理是: 記憶體中只有一份.

3. 在記憶體中的形象圖:

首先,在產生js對象之前,我們需要創造一個建構函式(這都不知道,那就不要往下看了),如下: 複製代碼 代碼如下:function Person(name_, age_) {
this.name = name_;
this.age = age_;
}

下面,我們就要new 對象了,這裡,我們new三個(Person)對象,"張三" "李雷" "韓梅梅",他們來自同一個建構函式Person:

記憶體中就這樣了,每個對象,都有自己的 name, age 記憶體.這裡new了多少個對象,就要開闢多少塊name, age記憶體.

看到這,應該還是比較好理解的. 下面我們添加一條屬性.location屬性,如下: 複製代碼 代碼如下:function Person(name_, age_) {
this.name = name_;
this.age = age_;
this.location = "地球";
}

這時候 我們在new這三個人. 記憶體情況如下:

這裡我們看,三個對象都有一個"地球"的記憶體空間. 這裡你要動動大腦了, 三個人都有地球的記憶體,我們是不是可以這樣呢?

你看這樣好不好呢? 這樣只需要一個地球,大家都可以用了. 看到這,好吧,公用的那個空間如果是個對象的話,就是所謂的原型對象了.餓?就這樣?

是的,就這樣.

原型對象,最重要的作用就是把常量和方法獨立到自身裡. 供給其它 "自己的對象" 使用. 最後:

4. 從代碼的層次上介紹原型對象.

是記憶體中的對象,我們現在從代碼的從面操作. 複製代碼 代碼如下:function Person(name_, age_) {
this.name = name_;
this.age = age_;
this.location = "地球";
}
// 三個具體的對象
var zhangsan = new Person("zhangsan", 21);
var lilei = new Person("lilei", 21);
var hanmeimei = new Person("hanmeimei", 21);
// 他們的原型對象是
Person.prototype.location = "地球";
Person.prototype.killPerson = function() {
return "殺人";
};

這裡有一個問題,我們知道原型對象,可是我們怎麼訪問到原型對象裡的屬性呢. 就是我們如何擷取到location ,和用 killPerson方法呢?
請看: 複製代碼 代碼如下:alert(zhangsan.location);
alert(zhangsan.killPerson());

這樣就可以訪問到了,不過前提是,你的對象屬性裡面,沒有定義location和killPerson.不然會把原對象的覆蓋掉. 這裡面涉及到原型問題即,
在zhangsan.location的時候,首先,我們檢查zhangsan對象本身,我們知道,張三有 name, age 和prototype指標屬性. 並沒有location,找不到以後,它會繼續搜尋原對象裡面,看能否找到location屬性,如果有,就會調用原對象的屬性.
所以 複製代碼 代碼如下:alert(zhangsan.location) 會輸出 "地球"
alert(zhangsan.killPerson() ) 會輸出 "殺人"

以上是我個人對原型對象的理解,希望對大家有協助.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.