JavaScript继承

来源:互联网 发布:stc系列单片机 编辑:程序博客网 时间:2024/06/01 08:54

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();
原创粉丝点击