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

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

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










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

相关文章推荐

深入javascript面向对象,js的原型链、继承

进阶面向对象——————————————————————–在JS源码中,系统对象也是基于原型的程序, 尽量不要去添加和修改系统对象的方法 包装对象——————————————————————–基本类型...

Javascript面向对象(三)——原型继承

原型继承 实际编程中,我们经常需要一些东西并扩展之。例如,我们有user对象,带有属性和方法,现在想要admin和guest,和其稍微有些变化,我们最好重用user对象,但不是复制/重新实现它的方...

JavaScript 面向对象与原型、继承

一、创建对象 1、直接new var box = new Object(); //创建一个Object 对象 box.name = 'Lee'; //创建一个name 属性并赋值 box.age = ...

javaScript对象 原型深入理解 继承

javaScript对象 原型继承 构造函数继承 组合继承 javaScript是脚本语言。脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。脚本语言是为...

JavaScript-形象理解面向对象、原型和继承

这是第二次整体复习JavaScript的面向对象与原型方面的知识。这部分的知识比较抽象但是又十分重要。它对后期类库的封装,整体架构的实现非常重要。在这节我将对每个方式进行形象全面的讲解。...

JavaScript 面向对象思想以及原型、继承

首先,回顾一下JavaScript 对象的概念。每个对象中封装了一些属性和方法,并且这一部分保存在堆内存中,而每个对象实例其实是一个句柄,也就是一个指针,指向堆内存中的那块数据,所以说,这是JavaS...

JavaScript面向对象(二)--前端必须知道的原型和继承

原型是JS语言的难点,此文主要讲原型及原型实现的继承,希望对大家有所帮助。一、原型(prototyle) 是用来定义公共特征、行为,表现为对象的属性/函数。目的是为了提高代码的复用、降低代码的耦合并...

JavaScript的两种面向对象方法--原型继承(prototype)和函数继承(闭包)

常用的两种JS继承和面向对象写法。 一、原型继承 使用prototype向对象绑定方法。 继承时在子类中使用call继承父类的构造方法,并使用new声明继承父类的方法。 var D...
  • as66t
  • as66t
  • 2013年05月06日 15:11
  • 880

Javascript之对象和原型链

Javascript之对象和原型链

javascript 原型链、执行环境、作用域链、实例对象之间的关系

javascript 原型链、执行环境、作用域链、实例对象之间的关系 转载▼ 原型链: 在创建一个函数时,就自动为该函数添加一个prototype属性,该属性指向原型对象,默认情...
  • ilvu999
  • ilvu999
  • 2012年08月16日 01:26
  • 276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript (对象继承)原型链
举报原因:
原因补充:

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