首页 > 代码库 > js原型链
js原型链
1、自定义函数与 Function的关系:
①本地对象:独立于宿主环境(浏览器)的对象——包括Object、Array、Date、RegExp、Function、Error、Number、String、Boolean
②内置对象——包括Math、Global(window,在js中就是全局变量),使用的时候不需要new
③宿主对象——包括自定义对象、DOM、BOM
故所有的函数都是 Function 的实例;
2、构造函数、原型和实例的关系:
①在构造函数上都有一个原型属性 prototype,该属性也是一个对象;
②原型对象上有一个 constructor 属性,该属性指向的就是构造函数;
③实例对象上有一个 _proto_ 属性,该属性也指向原型对象,并且该属性不是标准属性,不可以用在编程中,该属性用于浏览器内部使用。
3、prototype与_proto_的关系:
prototype是构造函数的属性,_proto_是实例对象的属性,这两者都指向同一个对象
4、函数与对象:
对象的本质:无序的键值对集合;键值对当中的值可以是任意数据类型的值;
对象就是一个容器,这个容器当中放的是(属性和方法)
故函数也是对象,对象不一定是函数;
5、属性搜索
①在访问对象的某个成员的时候会先在对象中找是否存在
②如果当前对象中没有就在构造函数的原型对象中找
③如果原型对象中没有找到就到原型对象的原型上找
④知道Object的原型对象的原型是null为止
6、试一试
function Foo(){
getName=function(){
alert(1);
};
return this;
}
Foo.getName =function(){
alert(2);
}
Foo.prototype.getName=function(){
alert(3);
}
var getName=function(){
alert(4);
}
function getName(){
alert(5);
}
打印:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
js原型链