原型编程范型
基于原型链的委托机制就是原型继承的本质。
原型编程范型的基本原则:
1. 所有的数据都是对象。
2. 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它。
function Person(name){
this.name=name;
}
Person.prototype.getName=function()
{
return this.name=name;
}
var a=new Person(‘sven‘);
console.log(a.name);//sven
console.log(a.getName());//sven
console.log(Object.getPrototypeOf(a)===Person.prototype);//true
在这里Person不是类,而是函数构造器,JS的函数调用既可以作为普通函数被调用,也可以作为构造器被调用,当使用new运算符来调用函数的时,此时的函数就是一个构造器。用new运算符来创建对象的过程,实际上也只是先克隆Object.prototype对象,再进行一些其他额外操作的过程。
3. 对象会记住它的原型。
在js原型链查找机制中,每个对象至少应该先记住它自己的yuanx;JS给对象提供了一个名为_proto_的隐藏属性,某个对象的_proto_属性会指向它的构造器的原型对象。
4. 如果对象无法响应某个请求,它会把这个请求委托给它自己的原型。
当一个对象无法响应某条请求的时候,它会顺着原型链把请求传递下去,直到遇到一个可以处理该请求的对象为止。虽然js的对象最初都是由Object.prototype对象克隆而来的,但对象构造器的原型并不仅限于Object.prototype上,而是可以动态地指向其他对象。
var A=function(){};
A.prototype={name:‘sven‘};
var B=function(){};
B.prototype=new A();
var b=new B();
console.log(b.name);//sven