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

2017-02-26  本文已影响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>
上一篇下一篇

猜你喜欢

热点阅读