JavaScript|JavaScript 中的继承
作者 魏楷聪 发布于 2015年01月20日
【JavaScript|JavaScript 中的继承】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。5) 混合方式(推荐)
var child = new Child();
alert(child instanceof Parent); // outputs "true";
alert(child instanceof Child); // outputs "true";
文章图片
用对象冒充继承构造函数的属性
用原型链继承prototype对象的方法
由于混合方式使用了原型链,所以instanceof运算符仍能正确运行
小试牛刀:
文章图片
混合方式的运用
(完)
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 事件代理
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗