美文网首页
面向对象(八)继承___ 06专门的方法来实现继承(Object

面向对象(八)继承___ 06专门的方法来实现继承(Object

作者: 凸小布 | 来源:发表于2017-02-26 16:38 被阅读10次

    title: 面向对象(八)继承___ 06专门的方法来实现继承(Object.creare)
    date: # 文章生成时间,一般不改
    categories: # 文章分类目录,可省略
    - 面向对象
    tags: # 文章标签,可省略
    - 面向对象
    - 基于原型面向对象的继承 # 个数不限,单个可直接跟在 tags 后面


    Object.create

    作用:创建对象,并且设置该对象的原型对象
    兼容性问题:ES5

    demo1:创建一个空的对象,并且设置这个对象的原型对象为obj

    <script>
        var obj1 = {name:"默认的名称"};
        var obj2 = Object.create(obj1);//创建一个空的对象,并且设置这个对象的原型对象为obj
        console.log(obj2.name); //默认的名称
    </script>
    

    demo2:解决兼容性问题方式一

    <script>
        var obj = {name:"张浩瀚"};
        if(typeof Object.create == "function")
        {
            var o = Object.create(obj);
        }else
        {
            //var o = {};
            //o.__proto__ = obj;  //不建议这样写(__proto__是非标准的属性)
    
            function F(){};
            F.prototype = obj;
            var o = new F();
        }
    </script>
    

    demo2:解决兼容性问题方式二

    <script>
        var obj = {name:"张浩瀚"};
        if(typeof Object.create == "function") {
            var o = Object.create(obj);
        }else
        {
            Object.create = function(){
                function F(){};
                F.prototype = obj;
                var o = new F();
            }
        }
    
        Object.create(); //只需要调用该方法就可以创建对象
    </script>
    

    demo3:解决兼容性问题方式三

    <script>
        var obj = {name:"张浩瀚"};
        function createObj(obj) {
            if (Object.create)
            {
                return Object.create(obj); //创建对象并且设置原型
            }else
            {
                function F(){};
                F.prototype = obj;
                return new F();
            }
        }
    
        //创建对象并且设置原型
        var o = createObj(obj);
        var o2 = createObj(o);
    </script>
    

    相关文章

      网友评论

          本文标题:面向对象(八)继承___ 06专门的方法来实现继承(Object

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