AJax技术

javaScript中Blob对象的学习笔记(3)

字号+ 作者:H5之家 来源:H5之家 2016-10-06 18:00 我要评论( )

var instance = new SubType(); alert(Sub: + instance.getSubValue()); alert(Super: + instance.getSuperValue()); 原型链虽然很强大,但是用它来实现继承,最主要的问题来自包含引用类型值的原型。引用类型值的

var instance = new SubType();
alert("Sub: " + instance.getSubValue());
alert("Super: " + instance.getSuperValue());
原型链虽然很强大,但是用它来实现继承,最主要的问题来自包含引用类型值的原型。引用类型值的原型属性会被所有实例共享。

function SuperType() {
    this.colors = ["red", "blue", "green"];
}

function SubType() {}

SubType.prototype = new SuperType();

var instance1 = new SubType();
instance1.colors.push("black");
console.log(instance1.colors); // "red", "blue", "green", "black"

var instance2 = new SubType();
console.log(instance2.colors); // "red", "blue", "green", "black"
所以,在实践中,很少会单独使用原型链。

二. 借用构造函数

借用构造函数技术也叫做伪造对象,或经典继承。基本思路是在子类型构造函数的内部调用超类型构造函数。

函数只是在特定环境中执行代码的对象,因此通过使用apply()和call()方法,也可以在新创建的对象上执行构造函数。

function SuperType() {
    this.colors = ["red", "blue", "green"];
}

function SubType() {
    SuperType.call(this);
}

var instance1 = new SubType();
instance1.colors.push("black");
console.log(instance1.colors); // "red", "blue", "green", "black"

var instance2 = new SubType();
console.log(instance2.colors); // "red", "blue", "green"
使用call()方法(或apply()方法),实际上是在新创建的SubType实例的环境下调用了SuperType构造函数。

相对于原型链而言,借用构造函数有一个很大的优势,就是可以在子类型构造函数中向超类型构造函数传递参数。例如:

function SuperType(name) {
    this.name = name;
}

function SubType() {
    SuperType.call(this, "Hello world");
    this.age = 12;
}

var instance = new SubType();
alert(instance.name); // "Hello world"
alert(instance.age); // 12
由于在超类型中定义的方法,对于子类型而言是不可见的,结果所有类型都只能使用构造函数模式。因此借用构造函数的技术也很少单独使用。

三. 组合继承

【努力施工中…】

四. 寄生式继承

【努力施工中…】

五. 寄生组合式继承

没有了

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • AJAX系列教程

    AJAX系列教程

    2016-09-30 12:00

  • javascript 学习

    javascript 学习

    2016-09-12 15:17

  • 学习javascript:牛人的讲座视频和PPT

    学习javascript:牛人的讲座视频和PPT

    2016-08-22 13:00

  • 最全面的JavaScript调试技巧总结

    最全面的JavaScript调试技巧总结

    2016-08-21 15:01

网友点评
e