原型和原型鏈的理解
原型的作用:
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乙個物件的過程 建立乙...