闲扯:有次面试,面试官问了我一句,你知道function是怎么来的吗?我当时一脸蒙蔽,我说function是本来就有的,当时基础太菜,面试官是function也是一个对象,然后没有过多解释,今天看完原型规则才知道,我方为我,哈哈
原型规则,不多扯,有五个,自己先记下来
- 所有的引用类型都具有对象属性
注意:null除外
-
既然都具有对象属性,引用类型均具有__proto__属性,称为隐式原型,这个隐式原型的类型(有点绕口,具有普通对象属性)
-
所有函数类型,均具有prototype属性,称为显示属性,也同样具有对象属性
-
重点来了,前三个相当于函数推到的铺垫:所有引用类型的__proto__属性均指向其构造函数的prototype属性
object.__proto__===Object.prototype
-
当把引用类型当做对象来使用的时候,我们来访问其属性,当这个属性是这个对象所不具有的时候是,js会自动寻找其__proto__对象中的属性,即他的构造函数的属性,这也是我们为啥可以调用object.toString()方法啦
-
补充一点,大神的分享
每个构造函数的prototype属性都有一个constructor属性,这个属性指向构造函数本身,这个没咋遇到过,记下来先