面向对象的JavaScript之继续(二) 组织函数继续

弁言

建立即继续—组织函数继续

作甚组织函数?假如你还不清晰组织函数和一般函数的区分,那请看JavaScript组织函数与一般函数

组织函数继续

组织函数继续的中心 是 call()apply() 的运用,经由过程这个要领,转变函数的作用环境.

function SuperClass(name){
    this.name =name;
    this.book = ['c','java','htnl']

    this.getBook =function(){
        return this.book;
    }
}

//为父类增加要领
SuperClass.prototype.getName =function(){
    return this.name;
}

//声明子类
function SubClass(name){
    SuperClass.call(this,name)

}

var a = new SubClass('demongao');
var b = new SubClass('gsc');

a.book.push("cccc");
console.log(a.book,a.name); //["c", "java", "htnl", "cccc"] "demongao"
console.log(b.book,b.name); //["c", "java", "htnl"] "gsc"

console.log(a.getBook()); //["c", "java", "htnl", "cccc"]
console.log(a.getName()) //TypeError

       子类经由过程 SuperClass.call(this,name) 将子类中的变量在父类中执行了一遍,因为父类中是给 this 绑定属性的,因而子类天然也就继续了父类的共有属性.

       因为这类范例的继续没有触及原型prototype,所以父类的原型要领天然不会被子类继续,而假如想被子类继续就必须要放在组织函数中,如许建立出来的每一个实例都邑零丁具有一份而不能共用,这就违犯了代码复用的准绳

下一节解说 组合继续 ,它具有上两种继续式的长处

参考

本人对类式继续的一点点明白,如果那边诠释的有题目,请多指教,感谢!

    原文作者:DemonGao
    原文地址: https://segmentfault.com/a/1190000008399748
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞