弁言
建立即继续—组织函数继续
作甚组织函数?假如你还不清晰组织函数和一般函数的区分,那请看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
,所以父类的原型要领天然不会被子类继续,而假如想被子类继续就必须要放在组织函数中,如许建立出来的每一个实例都邑零丁具有一份而不能共用
,这就违犯了代码复用的准绳
下一节解说 组合继续 ,它具有上两种继续式的长处
参考
JavaScript 设想形式 — 张容铭 著
注
本人对类式继续的一点点明白,如果那边诠释的有题目,请多指教,感谢!