继承-原型链

function sayName(){

this.property = true;

}

sayName.prototype.getProperty = function(){

return this.property;

}

function sayAge(){

this.proAge =false;

}

sayAge.prototype = new sayName();

sayAge.prototype.getAge = function(){

return this.proAge

}

var instance = new sayAge();

instance.getProperty(); // true

原型链的本质就是重写原型对象,代之以一个新的实例对象。原本存在a里面的属性和方法,b继承了a的实例,那么现在b也有了a的属性和方法。

当以读取模式访问一个实例属性时,首先会在实例中搜索该属性,如果没有找到这个属性 则会继续搜索实例的原型,在原型链实现继承的情况下,所搜会沿着原型链继续向上搜索。

搜索总是要一环一环的前行到原型链末端才会停下来。

时间: 2024-08-29 17:17:17

继承-原型链的相关文章

Javascript 组合继承 原型链继承 寄生继承

Javascript继承通常有三种方式. 第一种:组合式继承: function SuperType(name) { this.name = name; this.colors = ["red", "blue", "green"]; } SuperType.prototype.sayName = function() { console.log(this.name); }; function SubType(name, age) { //通过ca

6.3 继承——原型链

6.3.1原型链 1:基本概念 原型链:每个构造函数都有一个prototype,每个prototype都包含一个指向构造函数的指针,而每个实例都包含一个指向prototype的内部指针.当   当我们令一个prototype等于另一个类型的实例,此时这个prototype就继承了另一个类型的prototype. 2:原型搜索机制 当我们读取一个属性时的过程:①实例属性②实例.prototype③实例.prototype.prototype……最后搜索Object prototype 3:默认的原

JavaScript核心-继承-原型链

继承是面向对象的编程的一大特性,很多OO语言都支持两种继承方式:接口继承和实现继承.在ECMAScript中,由于函数没有签名,所以无法实现接口继承,只有实现继承. 实现继承主要是依靠原型链来实现的. 简单回顾一下构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而对象的每个实例都有一个指向原型对象的内部指针. 再回顾一下原型对象的用途:用途是包含可以由特定类型的所有实例共享的属性和方法. 原型对象也是一个简单的对象,如果我们让一个原型对象等于另一个

JS面向对象之继承——原型链

原型对象 每个javascript对象都有一个原型对象,这个对象在不同的解释器下的实现不同.比如在firefox下,每个对象都有一个隐藏的__proto__属性,这个属性就是“原型对象”的引用. 原型链 由于原型对象本身也是对象,根据上边的定义,它也有自己的原型,而它自己的原型对象又可以有自己的原型,这样就组成了一条链,这个就是原型链,JavaScritp引擎在访问对象的属性时,如果在对象本身中没有找到,则会去原型链中查找,如果找到,直接返回值,如果整个链都遍历且没有找到属性,则返回undefi

JavaScript继承-原型链继承

//原型链继承 function SuperType(){ this.name = 'super'; this.girlFriends = ["xiaoli","xiaowang"]; } SuperType.prototype.sayName = function(){ console.log(this.name); } function SubType(){ this.age = 20; } //创建SuperType的实例赋给SubType的原型 //实现继承

对象冒充实现继承,原型链继承方法,以及组合继承模式

function Person (){ this.name=“张三”; this.run = function(){ alert( this.name+'在运动' ) } } Person.prototype.work = function(){ alert( this.name+'在工作’ ) } // web类 继承person类 原型链+对象冒充的组合继承模式 function web(){ Person.call( this )  //  对象冒充实现继承 } var w = new w

面向对象JS ES5/ES6 类的书写 继承的实现 new关键字执行 this指向 原型链

一 .什么是面向对象? 面向对象(Object Oriented),简写OO,是一种软件开发方法. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构.CAD技术.人工智能等领域. 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式. 编程范式 一般可以

一种基于JS原型链的类的构造与派生。【原创】

转载请注明出处 2016.7.5 by Totooria Hyperion http://demo.th-shr.com:9999/ // 初始化prototype和静态方法 function initClass(constructor,_proto) { // 配置prototype for(var key in _proto) { constructor.prototype[key] = _proto[key]; if(typeof _proto[key] == "function"

Angularjs Scope 原型链

我们知道scope是可以继承的.scope的继承和js原型链是同一个概念. <div ng-controller="parentCtrl"> {{name}} <div ng-controller="childCtrl"> {{name}} </div> </div> 在angular中,ng-controller指令会帮我们创建一个scope并继承它的父亲scope . parentCtrl scope继承自 $ro