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

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 web()

web.run() // 会执行  对象继承可以继承构造函数里面的方法

web.work() // 不会执行   对象继承可以继承构造函数里面的方法  但是无法继承原型链上面的方法跟属性

// web.protype = new Person()// 原型链继承方法 缺点 实例化子类的时候无法给父类传参

//  组合继承模式

function Person (name){

this.name=name;

this.run = function(){

alert( this.name+‘在运动‘ )

}

}

Person.prototype.work = function(){

alert( this.name+‘在工作’ )

}

function web(name){

Person.call(this,name)

}

web.protype = new Person()

原文地址:https://www.cnblogs.com/Aaron1Tall/p/10934056.html

时间: 2024-08-12 21:26:08

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

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

JavaScript核心-继承-原型链

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

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

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

原型、原型对象、构造函数、原型链理解

1. 基本概念: "原型属性"也可以叫做"原型"(prototype):所有函数都有prototype,我觉得可以理解为python中的类属性,不需要通过实例,直接用类(es5就是函数名)可以调用,下面列举了三种创建函数的方法,函数创建后都有prototype属性,prototype指向"原型对象". // 函数声明 function F1() { }; // 表达式定义 let F2 = function () { }; // 函数构造 let

原型、原型对象的理解 及其原型链继承

在 ES5 中,有的人可能对原型,原型对象,及其原型链不是很清楚,今天我就说说对这些的深入认识下.(如果有什么不懂得欢迎留言探讨,当然如果有什么写的不恰当的也希望大家留言备注.) 首先,再说原型与原型对象之前,当然有必要清楚构造函数,实例,原型与原型对象之间的关系.其实他们的关系也很简单. 构造函数,实例,原型与原型对象之间的关系: 构造函数有它自己的属性及其方法,其中包括自己定义的属性和方法外,还有两个特殊属性(prototype.constructor):而每个他的实例都会拥有它的所有属性和

继承-原型链

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

6.3 继承——原型链

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

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的原型 //实现继承

282 继承模式:原型链继承 : 得到方法,借用构造函数 : 得到属性,组合,new一个对象背后做了些什么

1.原型链继承 : 得到方法 function Parent(){} Parent.prototype.test = function(){}; function Child(){} Child.prototype = new Parent(); // 子类型的原型指向父类型实例 Child.prototype.constructor = Child var child = new Child(); //有test() <!DOCTYPE html> <html lang="e

JavaScript面向对象之实现继承的5种方法

1 <html> 2 <head></head> 3 <body> 4 <script type="text/javascript"> 5 6 /* 7 以下为文档原话: 8 ECMAScript实现继承的方式不止一种. 9 这是因为 JavaScript 中的继承机制并不是明确规定的,而是通过模仿实现的.这意味着所有的继承细节并非完全由解释程序处理. 10 作为开发者,你有权决定最适用的继承方式. 11 12 13 在Jav