JavaScript继承

1. 替换原型继承

 function MyArray() {
      }
 MyArray.prototype = new Array();//替换原型对象,使得MyArray继承了Array
 var arr = new MyArray();
 arr.push(1, 2, 3);//原型的push方法
 console.log(arr);
 console.log(arr.__proto__);
 var arr1 = new MyArray();
 console.log(arr1.__proto__);

2.《JavaScript语言精粹》作者提出了一个方式来实现继承, 经典继承方式

   function jicheng(obj) {
            var o = {};
            o.__proto__ = obj;//替换原型
            return o;
      }
        var o = jicheng({name: "张三"});
        console.log(o);

3.Object.create()方法实现继承,并解决它的兼容问题

 //自定义一个函数解决Object.create()方法
    function create(obj) {
        if (Object.create) {
             return Object.create();
        } else {
           function F() {
               }
          F.prototype = obj;
          return new F();
            }
        }

4.比较low的继承方式,滚入式继承

var person = {
            name:"关羽",
            age:21,
            func:function () {
                console.log("耍大刀");
            }
        };
        var man = {
            name:"赵子龙",
            age:20,
            death:75,
            func:function () {
                console.log("耍龙胆枪");
            }
        };

        //滚入式继承(mix in)
        for(k in man){
            person[k] = man[k];
        }
        person.death = 55;
        console.log(person.death);
        console.log(person.name);//赵子龙

5.call、apply方法实现继承

    function Animal() {
            this.gender = "male";
        }
    function Tiger() {
            Animal.call(this);//tiger的this引用指向了Animal,但它仍然是Tiger的一个对象
            this.name = "老虎";
        }
    var tiger = new Tiger();
    console.log(tiger.gender);//male
    console.log(tiger.name);//老虎

6.寄生继承

  function BigAnimal(child) {
            var clone = Object(child);
            clone.play = function () {
                alert("BigAnimal真会玩");
            };
            return clone;
        }
        var  Tiger = {
            name : "老虎"
        };
        var animal = BigAnimal(Tiger);
        console.log(animal.name);
        animal.play();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值