原型和原型鏈

2021-10-07 18:02:22 字數 1376 閱讀 9595

原型和原型鏈的理解

原型的作用:

1.資料共享 節約記憶體記憶體空間

2.實現繼承

注意:函式也是乙個物件,物件不一定是函式。(物件有__proto__屬性,函式有prototype屬性)此處說明,方便大家理解下文。

下面我將舉例說明為什麼要使用原型

例1:

function

person

(name)

this

.sleep

=function()

}var p1=

newperson

("小明");

p1.eat()

;//小明吃東西

p1.sleep()

;//小明睡覺

var p2=

newperson

("小利");

p2.eat()

;//小利吃東西

p2.sleep()

;//小利睡覺

console.

dir(p1)

;//dir()列印結構

console.

dir(p2)

;

每次使用建構函式person()例項化出物件的時候,就會給每個例項物件的eat()方法和sleep()方法開闢空間。可是當例項化許多物件的時候,就會浪費大量的空間,因為每個例項物件的eat()方法和sleep()的功能都是一樣的,所以我們沒必要為每個例項物件新增eat()方法和sleep()方法。

這時原型就派上用場了,看下面經過改造的例子:

function

person

(name)

person.prototype.

eat=

function()

;person.prototype.

sleep

=function()

var p1=

newperson

("小明");

p1.eat()

;//小明吃東西

p1.sleep()

;//小明睡覺

var p2=

newperson

("小利");

p2.eat()

;//小利吃東西

p2.sleep()

;//小利睡覺

console.

dir(p1)

;console.

dir(p2)

;

eat()方法和sleep()被新增到了person()建構函式的原型(prototype)上了。因此只有乙份eat()方法和sleep()方法。當例項物件需要使用這些方法的時候就在自己的__proto__屬性中找到並呼叫這些方法實現相應的功能。

原型 和 原型鏈

每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...

原型和原型鏈

原型鏈 例項物件與原型之間的連線,叫做原型鏈 function human human.prototype.age 22 var a new human console.log a.age 這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?這裡例項物件...

原型和原型鏈

建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...