构造函数:大写字母开头;
var a={}; var a=new Object();
var a=[]; var a=new Array();
function Foo(){}; var Foo=new Function (){}
使用instanceof判断一个函数是不是一个变量的构造函数
f instanceof Foo ; f instanceof Object (true);
eg:判断一个变量是不是数组: instanceof Array;
for in
var item for(item in f) { //高级浏览器已经在for in中屏蔽了原型属性 //但是还是加上下面的判断,保证程序的健壮性 if(f.hasOwnProperty(item)) {} }
所有的引用类型
都具有对象的特性,即可自由扩展属性,(null除外);
都有一个_proto_(隐式原型)属性,属性值是一个普通的对象;
_proto_(隐式原型)属性值指向他的构造函数的prototype(显式原型)属性值;(===)
所有的函数
①都有一个prototype(显式原型)属性,属性值是一个普通的对象;
②当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,
那么会去他的 _proto_(即他的构造函数的prototype)中查找;
f._proto_==Foo.prototype
③ 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,
且他的 _proto_(即他的构造函数的prototype)也没有这个属性 ,
那么会去他的 _proto_的_proto_中查找(即他的构造函数的构造函数的prototype)(即f._proto_._proto_);
f._proto_. _proto_==Foo.prototype._proto_==Object.prototype;
注意:Object._proto_==null;