码迷,mamicode.com
首页 > 编程语言 > 详细

【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链

时间:2015-05-21 18:49:55      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承。

类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply实现对象冒充,把类型定义的东西都复制过来,这样的继承子类与父类并没有多少关联,不互相影响,有利于保护自身的一些私有属性。

原型继承:每个函数都有自己的原型(prototype)属性,这个属性是在生成实例对象时自动创建的。它本身又是一个对象,拥有能够在实例间共享的属性和方法。而实例本身的属性和方法,则包含在构造函数中。换句话说,构造函数内部的属性和方法,在经过实例化后都成为了本地的属性和方法,而原型(prototype)中的属性和方法在实例中只是一种引用,因此能够被多个实例共享。  

两者各有利弊,实际应用中多是两者混合应用。

以下就通过混合两者的示例去理解:

    function A(x) {
        this.x = x;
    }
    A.prototype.a = "a";
    function B(x, y) {
        this.y = y;
        A.call(this,x);//类继承
    }
    B.prototype.b1 = function() {
        alert("b1");
    }
    B.prototype = new A();//原型继承
    B.prototype.b2 = function() {
        alert("b2");
    }
    B.prototype.constructor = B;
    var obj = new B(1, 3);

 

【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链

标签:

原文地址:http://www.cnblogs.com/bloghxr/p/4520110.html

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