JavaScript中原型對象的基本概念

在以前咱們學習對象的時候,講到了建立對象的方式,一個是經過構造函數建立一個新的對象,一個是對象字面量的方式建立對象.函數

講到對象就必需要認識原型對象的概念了.學習

1 原型對象的概念this

構造函數有一個默認的屬性prototype屬性,這個屬性指向了一個對象,這個對象就是這個構造函數的原型對象了.prototype

同時這個原型對象種有一個constructor屬性,這個屬性指向的是構造函數自己.對象

2 原型對象中的功能blog

原型對象中的屬性和方法,能夠被實例對象所共享(不一樣實例對象調用的原型函數中的屬性和方法爲同一個).原型鏈

3 實例對象指向原型對象原型

在經過構造函數建立出來的實例對象,有一個__proto__屬性,這個屬性指向的就是構造函數的原型對象.io

可是因爲__proto__屬性爲非標準屬性,因此不建議使用__proto__屬性來查找原型函數.若是須要對原型對象設置屬性,建議使用構造函數的prototype屬性來找到原型對象.console

4 實例調用屬性或方法的過程

在實例.屬性名的方式調用時,實例會先在自己中查找這個屬性,若是沒有這個屬性就往上找到原型對象,在原型對象中查找這個屬性,若是尚未再往上找到原型對象的原型對象,直到原型鏈的頂端(也就是再也不有原型對象的時候).

5 對象結構圖

原型對象比較抽象,而咱們只能經過結構圖來加深認識.

案例代碼:

function Animal(name,color){
this.name=name;
this.color=color;
}
Animal.prototype.cry=function(){
console.log("我是"+this.name,"我被欺負了,55555");
}
var cat=new Animal("Tony","灰白色");
var dog=new Animal("哈二貨","棕色");
對應的結構圖:

相關文章
相關標籤/搜索