对象继承其他对象的方法和属性

Posted 盖大楼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象继承其他对象的方法和属性相关的知识,希望对你有一定的参考价值。

顶一个扩展函数,用来将第二个参数及以后的属性、方法拷贝给第一个函数;

<script>
//    var extend=(function(){}());  这是格式
    var extend=(function(){
        var p;
        var result=p in {toString:null};
        if(result){ //检测p是否存在toString属性,这是一个检测  看是否可以可枚举 所以用toString这个为代表
            return function extend(o){
                for(var i=1;i<arguments.length;i++){ //这里采用i=1 开始 是因为第一位0 是o;后面的所有存在的函数都是为o提供方法和属性的,给o扩展;
                    var source=arguments[i];
                    for(var prop in source){
                        o[prop]=source[prop]; //这里才是复制属性方法给o;
                    }
                }
                return o;
            };
        }
        //如果p不存在 可以枚举到toString
        else{
            return function pathed_extend(o){
                for(var i=1;i<arguments.length;i++){
                    var source=arguments[i];
                    for(var prop in source){
                        o[prop]=source[prop];
                    };
                };
//                这里定义要检查的特殊属性 之前没法自动枚举到 
                var protoprops=[‘toString‘,‘valueOf‘,‘constructor‘,‘hasOwnproperty‘,‘isPrototypeOf‘,‘propertyIsEnmerable‘,‘toLocalString‘];
                for(var j=0;j<protoprops.length;j++){
                    prop=protoprops[j];
                    if(source.hasOwnProperty(prop)){
                        o[prop]=source[prop];
                    }
                }
                return o;
            }
        }
    }());
    //测试 定义一个空对象
    var arr={};
    var b={
        speak:‘1‘,
        name:‘b‘,
        run:function(){
            var that=this;
            alert(this.name+‘正在run‘);
        }
    };
    var c={
        sleep:function(){
            alert(‘睡觉‘);
        }
    }
    //arr.run(); //未拷贝之前 报错
    extend(arr,b); //拷贝b的方法和属性
    arr.name="arr"; //自定义新的属性
    arr.run(); //测试拷贝的方法
    
    extend(arr,b,c); //测试多个参数 能不能继承到C的方法
    arr.sleep(); //可以
    
</script>

 

以上是关于对象继承其他对象的方法和属性的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象特性

面对对象特征之继承

Python面向对象:继承多态类属性和类方法单例

Python面向对象:继承多态类属性和类方法单例

面向对象方法中,继承指的是啥

js对象是拥有属性和方法的数据吗?