javascript (对象继承)原型链

原创 2016年08月30日 17:39:33

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能判断。

值得注意的是:当子类型又需要重写超类中的某个方法,或者需要添加超类型中不存在的方法,添加方法的代码必须放在替换原型的语句之后。

原型链固然好用,可以用他来继承,但是也存在问题,就是如果子函数对其原型链上的属性进行修改的时候,会影响到超类型的属性,因为他们指针所指的地方是同一个。










版权声明:本文为原创文章,未经博主允许不得转载,欢迎各种交流,共同进步。 举报

相关文章推荐

Js中的原型继承和原型链

第一次接触Javascript的时候是为了写一个前端页面,当时用了各种DOM方法,后来知道了Jquery,Js代码写起来更加方便,曾经以为Js不过如此,直到最近开始学习Js语言的时候,才发现以前看到的...

JavaScript的继承--原型链

JavaScript描述了原型链的概念,并将原型链作为实现继承的主要方法。基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

javascript 原型链继承

javascript 原型链继承

JavaScript:原型链、继承

(1)理解原型对象     1).只要创建了一个新函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象;     2).所有原型对象都会自动获得一个constructor(构造...

javascript继承与原型链

继承与原型链 在本文章中 基于原型链的继承 继承属性继承方法 使用不同的方法来创建对象和生成原型链 使用普通语法创建对象使用构造方法创建对象使用Object....

JavaScript 继承与原型链

熟悉 Java,C++ 的人都知道这些语言的继承都是基于 Class 的,但是熟悉 JavaScript 的人也知道 javaScript 是没有Class的(在 ES6 中添加了 Class 关键字...

JavaScript 利用原型和原型链实现对象继承

实际上JavaScript并不是一门面向对象的语言,不过JavaScript基于原型链的继承方式、函数式语法,使得编程相当灵活,所以可以利用原型链来实现面向对象的编程。 之前对JavaScript一...

Javascript:继承和原型链

JavaScript:继承和原型链(译) 原文:Inheritance and the prototype chain 译者:youngsterxyf 对于具备基于类的编程语言(...

JavaScript——对象属性、创建对象、继承、原型链

一对象 属性类型 方法 二创建对象 工厂模式 构造函数模式 原型模式重点 组合使用构造函数和原型模式最常见 动态原型模式 寄生构造函数模式不推荐使用 稳妥构造函数模式适合安全环境 三继承 原型链 借用...

js关于继承

在ECMAScript中实现继承主要是依靠原型链来实现的
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)