美文网首页
js中的(混合对象)类

js中的(混合对象)类

作者: 李诺哦 | 来源:发表于2017-12-07 22:21 被阅读120次

显式混入

js手动实现类的复制功能

function mixin(fatherObj, childObj) {
    for (var key in fatherObj) {
        if (!(key in childObj)) {
            childObj[key] = fatherObj[key]
        }
    }

    return childObj
}   //复制方法,已有的key不复制

var food = {  //创建父类
    caneat: true,

    tasty: function () {
        console.log("its delicious")
    }
}

var egg = mixin(food, {    //从父类拷贝到子类
    price: function () {
        console.log("very cheap")
    }
})

console.log(egg)  
// {caneat: true, price: ƒ, tasty: ƒ}

寄生继承

// 传统类
function Vehicle() {
    this.engines = 1
}

Vehicle.prototype.ignition = function () {
    console.log("启动引擎")
}

Vehicle.prototype.drive = function () {
    this.ignition()
    console.log("开起走")
}

function Car() {
    //现定义car是一个Vehicle
    var car = new Vehicle()

    //对car进行特殊定制
    car.wheels = 4

    //保存父类的drive到h
    var h = car.drive

    car.drive = function () {
        h.call(this)
        console.log("老实踩油门,拱起走")
    }

    return car
}

var polo = new Car()

polo.drive()  
//启动引擎
//开起走
//老实踩油门,拱起走

以上例子,现复制父类Vehicle的定义,然后再混入子类的定义(如果需要保留到父类的特殊引用),然后用这个复合对象构建实例

注意:这里调用new Car时会创建一个新对象并绑定到Car的this上,但是因为我们没有使用这个对象,而是返回了我们自己的car对象,所以最初创建的这个对象会被丢弃,因此可以不使用new关键字调用Car(),这样做的结果是一样的,但是可以避免创建并丢弃多余的对象

相关文章

  • js中的(混合对象)类

    显式混入 js手动实现类的复制功能 寄生继承 以上例子,现复制父类Vehicle的定义,然后再混入子类的定义(如果...

  • JS对象和继承

    JS对象和继承 JS是个无类的语言,因此对于对象构造器(类)和对象的继承就值得我们研究了。本文讲述JS中构造器的表...

  • JavaScript中的Object对象

    JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍...

  • 10.面向对象和类的区别?

    简单来说类是对象的模板在JS中没有类,所以在JS中所谓的 类 就是构造函数。对象就是由构造函数创建出来的实例对象。...

  • JS基础-对象

    对象 类是对象的抽象,对象是类的实例。在js中一切皆为对象,如字符串、数字、数组等。在js中对象的本质:属性和方法...

  • day06 对象和数组

    1. 类是对象的抽象,对象是类的实例。 2.js中的对象? js语言中一切皆为对象,比如数字、字符串、数组、Ma...

  • 对象的相关概念和方法

    对象的概念 因为js中没有真正类的概念. js的实例对象都是通过函数的构造函数调用生成的(new), 对象和对象...

  • js中类和对象

    一、构造函数法这是经典方法,也是教科书必教的方法。它用构造函数模拟"类",在其内部用this关键字指代实例对象。 ...

  • JavaScript 混合对象“类”

    混合对象“类” 混入 在继承或者实例化时,JavaScript 的对象机制并不会自动执行复制行为。简单来说,Jav...

  • 关于原型链

    一、对象 要理解原型链,还要先从JavaScript的对象说起。在js中,对象分为两类,一类是函数对象,一类是普通...

网友评论

      本文标题:js中的(混合对象)类

      本文链接:https://www.haomeiwen.com/subject/nuwjixtx.html