先記住套路
function People(name){
this.name = name
}
People.prototype.sayName = function(){
console.log(`My name is ${this.name}`)
}
var p = new People('jirengu')
p.sayName()
發(fā)生了什么
當(dāng) new 一個(gè)函數(shù)時(shí),
- 創(chuàng)建一個(gè)空對(duì)象般此,把一個(gè)空的對(duì)象的 proto 屬性設(shè)置為 People.prototype
- 執(zhí)行函數(shù) People, 函數(shù)里面的 this 代表剛剛創(chuàng)建的新對(duì)象
- 返回這個(gè)對(duì)象
對(duì)于第3步晰房,如果構(gòu)造函數(shù)里有 return纫谅,分情況討論扎运。 如果 return 的是基本類型账月,會(huì)忽略不計(jì)祖能。 如果 return 的是引用類型,則返回這個(gè)引用類型
原型圖
Tips
任何函數(shù)都有 .prototype
這個(gè)屬性籽暇,對(duì)應(yīng)的值是一個(gè)對(duì)象叫原型對(duì)象温治,這個(gè)原型對(duì)象可以被由這個(gè)函數(shù) new 的所有對(duì)象共享
原型圖一定要會(huì)畫
組件化:
function Carouse(){}
Carouse.prototype.init=function (){}
Carouse.prototype.bind=function (){}
new Carouse('#app')
new Carouse('#app2')