javascript (对象继承)原型链
2016-08-30 17:39
344 查看
Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。这个函数包括构造函数和普通函数.
JS中的继承,子函数通过把父函数实例化实现的。
如以下代码:
instance 继承 了SubType222 ,SubType222集成父函数SuperType111
继承的原理:基于原型的搜索机制:当以读取模式访问一个实例属性时,首先会在实例中搜索该属性,如果没有找到该属性,则会继续搜索实例的原型。
而在以上用例得实际上,不是SubType222的原型constructor属性被重写了,而是SubType的原型指向了一个另外一个对象的SuperType的原型。
原型链的最末端是Object对象的原型对象。
因此,在原型链的关系中,可以说instance是Object,SuperType111 ,SubType222 任何一个类型的实例,用instanceof能判断。
值得注意的是:当子类型又需要重写超类中的某个方法,或者需要添加超类型中不存在的方法,添加方法的代码必须放在替换原型的语句之后。
原型链固然好用,可以用他来继承,但是也存在问题,就是如果子函数对其原型链上的属性进行修改的时候,会影响到超类型的属性,因为他们指针所指的地方是同一个。
Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。这个函数包括构造函数和普通函数.
JS中的继承,子函数通过把父函数实例化实现的。
如以下代码:
function SuperType111(){ this.property=true; } SuperType111.prototype.getSuperValue = function(){ return this.property; }; function SubType222(){ this.subproperty = false; } SubType222.prototype = new SuperType111(); SuperType111.prototype.getSubValue = function(){ return this.subproperty; }; var instance = new SubType222(); console.log(instance.getSuperValue());
instance 继承 了SubType222 ,SubType222集成父函数SuperType111
继承的原理:基于原型的搜索机制:当以读取模式访问一个实例属性时,首先会在实例中搜索该属性,如果没有找到该属性,则会继续搜索实例的原型。
而在以上用例得实际上,不是SubType222的原型constructor属性被重写了,而是SubType的原型指向了一个另外一个对象的SuperType的原型。
原型链的最末端是Object对象的原型对象。
因此,在原型链的关系中,可以说instance是Object,SuperType111 ,SubType222 任何一个类型的实例,用instanceof能判断。
值得注意的是:当子类型又需要重写超类中的某个方法,或者需要添加超类型中不存在的方法,添加方法的代码必须放在替换原型的语句之后。
原型链固然好用,可以用他来继承,但是也存在问题,就是如果子函数对其原型链上的属性进行修改的时候,会影响到超类型的属性,因为他们指针所指的地方是同一个。
相关文章推荐
- Javascript对象继承(原型继承法)
- javascript 对象及原型继承有关的属性:constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty 等等
- javascript模拟实现继承,继承一次父类模板和原型对象
- JavaScript 学习_4_原型_对象_继承
- 【JavaScript高级程序设计】读书笔记之二 —— 理解对象的原型、继承
- JavaScript中的对象和原型链,函数继承(转)
- JavaScript对象原型继承关系图
- JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习
- Javascript对象原型prototype和继承
- Javascript对象和原型继承的理解
- JavaScript-通过原型继承一个对象
- javascript之对象学习笔记(二)--对象原型,继承
- 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)
- 学习笔记---Javascript原型对象、this的5钟用法、原型继承、Caller和Callee的使用
- Javascript对象原型prototype和继承
- javascript 对象及原型继承有关的属性:constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty 等等
- 一张图解释javascript原型、原型链,对象、原型对象,模拟类,模拟继承。
- web前端学习(二) javascript对象和原型继承
- JavaScript 面向对象思想以及原型、继承
- JavaScript使用原型和原型链实现对象继承的方法详解