资讯专栏INFORMATION COLUMN

JavaScript面向对象编程-继承(四)

MartinHan / 3034人阅读

摘要:一些面向对象语言中支持多继承,在也能实现多继承,但是有一些局限,因为在中继承是依赖原型链实现的,只有一条原型链,所以理论上是不能继承多个父类的。从第一个参数起为被继承的对象获取参数长度缓存参数对象缓存当前对象遍历被继承对象中的属性

一些面向对象语言中支持多继承,在JavaScript也能实现多继承,但是有一些局限,因为在JavaScript中继承是依赖原型prototype链实现的,只有一条原型链,所以理论上是不能继承多个父类的。但是JavaScript很灵活,通过一些技巧方法可以继承多个对象的属性来实现类似的多继承。

单继承

继承单对象的extend方法:

//单继承  属性复制
var extend = function (target,source) {
    //遍历源对象中的属性
    for(var property in source){
        //将源对象中的属性复制到目标对象中
        target[property] = source[property];
    }
    //返回目标对象
    return target;
};

单继承的测试代码

//测试代码
var book ={
    name:"javascript",
    alike:["css","html5","js"]
}
var anotherBook = {
    color :"blue"
}
extend(anotherBook,book);
console.log(anotherBook.name);//javascript
console.log(anotherBook.alike);//[ "css", "html5", "js" ]
anotherBook.alike.push("ajax");
anotherBook.name = "设计模式";
console.log(anotherBook.name);//设计模式
console.log(anotherBook.alike);//[ "css", "html5", "js", "ajax" ]
console.log(book.name);//javascript
console.log(book.alike);//[ "css", "html5", "js", "ajax" ]

上面的方法可以实现对一个对象属性的复制继承,当传递多个对象时,即可实现多继承。

多继承
//多继承  属性复制
var mix = function () {
    var i =1,//从第二个参数起为被继承的对象
        len =arguments.length,//获取参数长度
        target = arguments[0], //第一个对象为目标对象
        arg;//缓存参数对象
    for(;i

mix方法的作用是将传入的多个对象的属性复制到源对象中,这样即可实现对多个对象的属性的继承。另外当使用的时候需要传入目标对象(第一个参数-需要继承的对象)时,可以将它绑定到原生对象Object上,这样所有的对象都可以拥有这个方法。这样就可以在对象上直接调用。

Object.property.mix = function () {
    var i=0,//从第一个参数起为被继承的对象
        len =arguments.length,//获取参数长度
        arg;//缓存参数对象
    for(;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108535.html

相关文章

  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    AaronYuan 评论0 收藏0
  • Javascript面向对象编程(三):非构造函数的继承

    摘要:原文链接一什么是非构造函数的继承比如,现在有一个对象,叫做中国人。通过函数,继承了。中国北京上海香港厦门北京上海香港厦门北京上海香港这时,父对象就不会受到影响了。目前,库使用的就是这种继承方法。 原文链接 一、什么是非构造函数的继承? 比如,现在有一个对象,叫做中国人。 var Chinese = { nation: 中国 } 还有一个对象,叫做医生。 var Doctor = {...

    jaysun 评论0 收藏0
  • JavaScript中的面向对象(object-oriented)编程

    摘要:对象在中,除了数字字符串布尔值这几个简单类型外,其他的都是对象。那么在函数对象中,这两个属性的有什么区别呢表示该函数对象的原型表示使用来执行该函数时这种函数一般成为构造函数,后面会讲解,新创建的对象的原型。这时的函数通常称为构造函数。。 本文原发于我的个人博客,经多次修改后发到sf上。本文仍在不断修改中,最新版请访问个人博客。 最近工作一直在用nodejs做开发,有了nodejs,...

    JerryZou 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<