码迷,mamicode.com
首页 > 其他好文 > 详细

继承的实现方式

时间:2017-12-28 18:22:19      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:post   new   name   console   []   简单   练习   功能   3.1   

1.继承的实现方式

    自己没有的别人有拿过来用,就是继承

1.1 混入式继承(mix-in)

       var obj={};
       var obj1 = {
            name: "王健林",
            money: "赚它一个亿",
            makeMoney: function () {
                console.log("再赚他一个亿");
            }
        }   
        // for(var k in obj1){
        //     obj[k] = obj1[k];
        // }
        // // console.log(obj.money);

1.2. 原型继承 (要有构造函数)

     利用原型实现的继承效果,就是原型继承

     function Person(){
        }
       var obj1 = {
            name: "王健林",
            money: "赚它一个亿",
            makeMoney: function () {
                console.log("再赚他一个亿");
            }
        }
     var obj=new Person();
1.2.1 利用混入的方式,将要继承的对象的所有的属性和方法添加到当前对象的原型中
        // for(var k in obj1){
        //     obj[k] = obj1[k];
        // }
        // // console.log(obj.money);
1.2.2 直接将要继承的对象作为当前对象的原型!
        // Person.prototype = obj1;
        // var obj = new Person();
         // console.log(obj.money);

1.3. 经典继承

     其实经典继承就是原型继承的另外一种实现方式!
     Object.create();
    1.3.1 语法: var 对象 = Object.create(要继承的对象);
    1.3.2 功能: Object.create方法,可以用来创建一个对象,这个对象的原型,就是参数中传递进去的对象
    1.3.3 原理: 其实就是将参数中传入的对象,作为了新对象的原型! 
        // var obj = {
        //     name: "朱三辉",
        //     sing: function () {
        //         console.log("我已开始练习,开始慢慢熟悉");
        //     }
        // };
        // var p = Object.create(obj);
        // console.log(p.__proto__ === obj);
        // p.sing();
    1.3.4 Object.create方法有兼容性问题!
        //解决兼容性问题
        //我们自己封装的快速实现原型继承(经典继承)的方式
        function myCreate(obj){
            if(Object.create){
                return Object.create(obj);
            }else{
                function F(){}
                F.prototype = obj;
                return new F();
            }
        }

2.继承的应用(帮所有的数组对象,添加一个方法 sum)

2.1 直接给Array原型添加属性和方法(最简单但是不稳妥的解决方案!)

        //     Array.prototype.sum = function () {
        //     var result = 0;
        //     for(var i = 0; i < this.length; i ++){
        //         result += this[i];
        //     }
        //     return result;
        // }
        // var arr = [1, 2, 3];
        // var result = arr.sum();

2.2 要实现的功能,给所有的数组加上一个sum方法!(安全的扩展内置对象)

       function MyArray () {
        }
        MyArray.prototype = []; 
        MyArray.prototype.sum = function () {
            var result = 0;
            for(var i = 0; i < this.length; i ++){
                result += this[i];
            }
            return result;
        } 
        var arr = new MyArray(); 
        arr.push(1);
        console.log(arr.sum());
 
技术分享图片

 

继承的实现方式

标签:post   new   name   console   []   简单   练习   功能   3.1   

原文地址:https://www.cnblogs.com/pavilion-y/p/8136824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!