C++,java是基于类的语言,主要通过类来实现继承。
javascript是基于原型的语言,通过原型来实现继承。
什么是原型?每种物质,都可以追根溯源,原型就是对象的根源。继承就是追根溯源。
javascript里谈继承,只涉及到一个东西:对象Object。每个对象都有自己的原型,都可以从自己的原型处继承属性或者方法。
每个对象都有自己的prototype,逐层追溯,直到null,形成所谓的原型链。
null对象是原型链的终点,追根溯源止于null.
当获取一个属性,或者调用一个方法,都是按此原型链追溯,如果直到null都没有找到,就返回undefined。
var o={mem:1}; //Object
//原型链:o==>Object.prototype==>null var a=["kim","joe",""]; //Array
//原型链:a==>Array.prototype==>Object.prototype==>null var f =function(){
return true;
} //function
//原型链:a==>Function.prototype==>Object.prototype==>null