怎麼理解js的原型對象

1. 所有對象都有原型對象。

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

內存中的圖解:

先寫個構造器:


 
  1. function Person(name, age)

  2. {

  3. this.name = name;

  4. this.age = age;

  5. }

  6.  
  7. var A = new Person('A', 18);

  8. var B = new Person('B', 28);

  9. var C = new Person('C', 38);


 
  1. function Person(name, age)

  2. {

  3. this.name = name;

  4. this.age = age;

  5. this.location = '地球';

  6. }

  7.  
  8. var A = new Person('A', 18);

  9. var B = new Person('B', 28);

  10. var C = new Person('C', 38);

三個對象都有一個”地球”的內存空間.  這裏你要動動大腦了, 三個人都有地球的內存,我們是不是可以這樣呢?

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

4. 從代碼上實現。


 
  1. function Person(name, age)

  2. {

  3. this.name = name;

  4. this.age = age;

  5. }

  6.  
  7. var A = new Person('A', 18);

  8. var B = new Person('B', 28);

  9. var C = new Person('C', 38);

  10.  
  11. Person.prototype.location = '地球';

  12. Person.prototype.killPerson = function()

  13. {

  14. console.log('kill!!!');

  15. }

  16.  
  17. A.location // 地球

  18. A.killPerson() // kill man

  19. B.location // 地球

不過前提是,你的對象屬性裏面,沒有定義location和killPerson.不然會把原對象的覆蓋掉

在A.location的時候,首先,我們檢查A對象本身,從圖中我們知道,A有 name, age 和prototype指針屬性.  並沒有location,找不到以後,它會繼續搜索原對象裏面,看能否找到location屬性,如果有,就會調用原對象的屬性.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章