目录

任何函数都有prototype

function fn() {}
console.dir(fn.prototype)

一般情况下,函数正常调用时的我们用不到这个属性(用不到不代表不存在) 某些情况下,这个却能用到

new一个函数创建对象

买房小故事

买房时: 销售小吴:我们先看一下房子的户型图,我们这里所有的房子都是带花园的。看这是房子,出门就是一个花园。要不现在就带您去花园看看? 我:(心里暗喜,价格虽然不便宜,如果带私家花园也算值了)好,看看

交付后: 我:出门到自家花园溜溜。地儿挺大,但看起来光秃秃的,先种颗树~ 隔壁老王:(杀猪叫)谁在我家花园栽树了!! 我:(??)这TM是公共花园?? 销售小吴:这多好啊,一家种树,一起乘凉~

function House() {}
let myHouse = new House()
let wangHouse = new House()
 
//myHouse.__proto.__ 等价于 House.prototype
myHouse.__proto.__.tree = true  
console.log(myHouse.tree)
console.log(wangHouse.tree)
重新认识函数

以下三者等价

Object 与Function

原型链

对于如下代码,dog.toString是哪里来的?

function Dog() {
  this.color = color
}
 
let dog = new Dog('yellow')
console.log( dog.toString() )

为什么要有Prototype