美文网首页
JavaScript 中的继承

JavaScript 中的继承

作者: 那只大象 | 来源:发表于2015-01-20 21:17 被阅读66次

    作者 魏楷聪 发布于 2015年01月20日

    1) 对象冒充(支持多重继承)

    继承的第一种方式:对象冒充

    2) call方法方式

    call方法是Function对象中的方法,因此我们定义的每个函数都有该方法。可以通过调用函数名来调用call方法,call方法的第一个参数会被传递给函数中的this,从第2个参数开始,逐一赋值给函数中的参数。

    使用call方式实现对象的继承

    3) apply方法方式

    使用apply方式实现对象的继承

    可以把 Child 的整个 arguments 对象作为第二个参数传递给 apply() 方法。当然,只有 Parent 中的参数顺序与 Child 中的参数顺序完全一致时才可以传递参数对象。如果不是,就必须创建一个单独的数组,按照正确的顺序放置参数。

    4) 原型链方式(无法给构造函数传参数)

    prototype对象是个模板,要实例化的对象都以这个模板为基础。总而言之,prototype对象的任何属性和方法都被传递给那个类的所有实例。

    与对象冒充相似,子类的所有属性和方法都必须出现在prototype属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为prototype属性被替换成了新对象,添加了新方法的原始对象将被销毁。

    记住:原型链会用另一类型的对象重写类的prototype属性。

    使用原型链(prototype chain)方式实现对象继承

    注意:调用 Parent 的构造函数时,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。

    对 Child 的所有实例,instanceof 为 Parent 和 Child 都返回 true。

    var child = new Child();

    alert(child instanceof Parent);  // outputs "true";

    alert(child instanceof Child);  // outputs "true";

    5) 混合方式(推荐)

    用对象冒充继承构造函数的属性
    用原型链继承prototype对象的方法
    由于混合方式使用了原型链,所以instanceof运算符仍能正确运行

    小试牛刀:

    混合方式的运用

    (完)

    相关文章

      网友评论

          本文标题: JavaScript 中的继承

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