对象冒充 实现多继承

注意:原型链时不支持多继承的

// 对象冒充实现类的多重继承
var ClassA=function (color){
    this.color = color;
    this.sayColor = function(){
        console.log(this.color);
    }
};
var ClassB=function (name){
    this.name = name;
    this.sayName = function(){
        console.log(this.name);
    }
};

//C 同时继承 A和 B
var ClassC=function(color,name){

    //把ClassA作为常规函数来建立继承机制,而不是作为构造函数
    ClassA.call(this,color);

    ClassB.call(this,name);
};
var objA=new ClassA(‘red‘),
    objB=new ClassB(‘George‘),
    objC=new ClassC(‘blue‘,‘Nicholas‘);
objA.sayColor();   //red
objB.sayName();     //George
objC.sayColor();   //blue
objC.sayName();     //Nicholas
时间: 2024-11-29 04:17:50

对象冒充 实现多继承的相关文章

【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链

JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承. 类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply实现对象冒充,把类型定义的东西都复制过来,这样的继承子类与父类并没有多少关联,不互相影响,有利于保护自身的一些私有属性. 原型继承:每个函数都有自己的原型(prototype)属性,这个属性是在生成实例对象时自动创建的.它本身又是一个对象,拥有能够在实例间共享的属性和方法.而实例本身的属性和方法,则

javascript 组合模式,对象冒充+原形链继承

//使用对象冒充来继承,只能继承构造对象中的信息 //原形中的无法继承构造对象中的方法每次实例化都会分配空间 //造成空间浪费 function Box(name,age){ this.name=name; this.age=age; this.run=function(){ return this.name+this.age+"运行中..." } } Box.prototype.family='加'; function Desk(name,age){ Box.call(this,na

js对象冒充实现的继承

//人类 function Person(name) { this.name = name; this.showName = function () { console.log("my name is " + name); } this.eat = function () { console.log("人是铁饭是钢..."); } } //白人 function WhitePerson(name) { this.temp = Person; this.temp(na

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

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最好的继承机制:用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。

js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA.prototype.sayColor = function () { alert(this.color); }; function ClassB(sColor, sName) {//在 ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性 ClassA.call(th

对象冒充继承和原生链实现继承的方法和问题

function People(){ this.name='zhangsan'; this.age = 20; this.run = fcuntion(){ alert(this.name+'在运动'); } } //原生链 People.prototype.sex = '男'; People.prototype.work = function(){ alert(this.name+'在工作'); } //1.对象冒充实现继承:只能继承构造函数里的 不能继承原生链 function Person

对象冒充

talk is cheap,show U the code!! //继承 //1.对象冒充 可以支持多重继承 //原理:构造函数使用this关键字,给所有的属性和方法赋值(即采用类声明的够着函数方式),例如 function ClassA(color){ this.color = color; this.sayColor = function(){ console.log(this.color); } } function ClassB(color,name){ //把ClassA作为常规函数来

javascript对象创建及原型继承的研究

今天总结了下javascript关于原型继承和对象创建方面的东西,因为javascript的原型继承在使用传统面向对象语言开发的同学看来比较怪异,原型继承确实比传统OOP语言的继承理解和运用起来困难一些,当然个人觉得传统OOP的继承相对比较简单,因为中规中矩. 下面逐个的用示例说明javascript中对象创建方式,专业一点叫什么模式,主要有直接单个创建:工厂模式:提出方法类函数公用方式:构造函数模式:构造函数+原型方式:使用原型本质的方式构建(这种受过李站的<悟透javascript>一书的

JavaScript中的对象冒充

JavaScript里没有继承关键字,想要继承一个类需要用到“对象冒充”. 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>对象冒