原型其實就是function的乙個屬性,它定義了建構函式製造出的物件的共有祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件
簡單來說,我們建立的每乙個建構函式自出生開始就自動的帶有這個屬性,這個屬性叫做prototype。這個屬性是乙個指標,指向乙個物件。這個物件中的屬性和方法可以被建構函式例項化的物件訪問。
接下來我們看乙個例子:
person.prototype.lastname = "wang";
function person(name, age, ***)
var person1 = new person("wu", 18, "female");
上述**中person就是我們建立的建構函式,而person.prototype就是person函式的原型,person1是person的例項化物件,person1被建立出來後,不僅具有了person建構函式的屬性,同時會繼承到原型中的屬性即lastname屬性
因此,通過person1.lastname就可以訪問到原型中的屬性。
**注:**如果建構函式和原型中具有同乙個屬性,則會根據就近的訪問原則,先判斷建構函式中是否有該屬性,如果建構函式中沒有這個屬性,才會去原型中找。例:
person.prototype.lastname = "wang";
function person(name, age, ***)
var person1 = new person("wu", 18, "female");
console.log(person1.lastname); //liu 建構函式中有lastname屬性,則會輸出建構函式中的屬性,建構函式中沒有才會去原型中找。
先看乙個例子:
function car( color )
var car1 = new car("red");
var car2 = new car("green");
上述例子只是乙個簡單的建構函式例項化的過程,這個過程中,每建立乙個例項都會執行一遍function中的語句,而這個例子中除了車的顏色不同之外,其餘屬性都是相同的,不管是car1還是car2都具有這些屬性,所以,並沒有必要重複執行,這時我們就可以把上述例子改寫成
car.prototype = ;
function car( color )
var car1 = new car("red");
var car2 = new car("green");
所以原型的乙個重要作用就是抽取公有屬性或方法。
總結: 總之要記住,原型是function的乙個屬性,和例項化的物件並沒有什麼關係!!!`
js基礎 原型和原型鏈
原型是js中的乙個重要知識點,之前一直都原型一知半解,最近在做js的基礎梳理,感覺很有必要做一下關於原型和原型鏈的總結。一 普通物件和函式物件 了解原型,所有我們需要知道js中變數歸根到底是啥,可能大家都聽說過 萬物皆物件。但物件也會有一定區分,存在 普通物件 和 函式物件,區分規則 通過 new ...
JS原型和原型鏈
建立建構函式 function word words word.prototype 建立例項 var w new word hello world w.print function w.print hello world w.alert hello world function.prototype....
js原型鏈和原型
1 原型 在js中一切皆物件,那原型也是乙個物件,通過原型可以實現物件的屬性繼承,js的物件中包含著乙個 prototype 內部屬性,這個屬性所對應的就是物件的原型。prototype 作為物件的內部屬性不能被直接訪問,所以為了方便檢視乙個物件的原型,提供了 proto 這個非標準的訪問器,在js...