构造函数
说到prototype
不得不提下构造函数constructor
。
1 | function Foo(name,age){ //在定义构造函数时,函数要以大写字母开头。以方便维护,修改。 |
扩展
var a={}其实就是var a = new Object的语法糖 //语法糖:简易写法
var a=[]其实就是var a = new Array的语法糖
function Foo(){…} 其实就是 var Foo = new Function(…)
使用 instanceof 可以判断一个函数是否是一个变量的构造函数
变量名 instanceof Array
prototype原型对象
所有的引用类型(数组,对象,函数),都有个_proto_
属性,属性值是普通的对象,叫做隐式原型对象。
所有函数中都会有个默认的prototype
属性,实际上他还是一个对象,如果被用在继承中,叫做显示原型对象。
如图,所有的引用类型(数组,对象,函数),_proto_
的属性都指向它的构造函数的prototype
属性值。
当试图得到对象的某个属性时,如果对象本身没有的这个属性。那么就会去他的_proto_
属性中寻找(即prototype
属性)。
如图本身是没有定义toString
的。却在f._proto_._proto_
找到了。