1、实现函数继承主要依赖于原型链,在创建实例时,实例有一个内部属性prototype指向原型对象,原型对象内的所有方法会被该实例使用。(构造函数创建之后,会生成原型对象prototype,原型对象也会有一个指针constructor指向构造函数)
function person() { } person.prototype.x=10; person.prototype.y=20; person.prototype.z=30; person.prototype.xx=function () { alert("我是xx!") } var student=new person(); console.log(student.z) console.log(student.xx) // function(){alert("我是xx!")} console.log(student.xx()) // 我是xx!
2、原型链:首先创建一个构造函数,在构造函数上默认生成一个prototype属性并指向原型对象。使用下一个构造函数的原型对象作为该构造函数的实例,既:nextFunction.prototype=new thisFunction();
*生成的实例对象有一个__proto__
属性也会指向原型, __ptoto__
属性不是标准, 但是大多数浏览器都实现了这一属性.
所有的对象都有原型,最终都会回到object.prototype(object构造函数的prototype属性),object.prototype的原型为空(null)。