【发布时间】:2015-10-29 16:16:18
【问题描述】:
我一直在阅读 Javascript 中的继承,并提出了创建构造函数并定义每个构造函数原型。我创建了一个prototypeExtend 函数,它将遍历每个构造函数原型并将它们添加到主构造函数原型中。
这是实现继承的实用方法吗?
function prototypeExtend() {
var cMain = arguments[0].prototype;
for(var i=1; i<arguments.length; i++){
var cTemp = arguments[i].prototype;
for(var k in cTemp){
if(cTemp.hasOwnProperty(k)){
cMain[k] = cTemp[k];
}
}
}
return cMain;
}
function Class1 () {}
Class1.prototype = {
el1:null,
fun1:function(str){
console.log(str + " from Class1");
},
setEl1:function(value){
this.el1 = value;
},
getEl1:function(){
return this.el1;
}
}
function Class2(){}
Class2.prototype = {
el2:"blah",
fun2:function(str){
console.log(str + " from Class2");
}
}
function Class3(){}
Class3.prototype = {
el3:"dah",
fun3:function(str){
console.log(str + " from Class3");
},
fun1:function(str){
console.log(str + " from Class3");
}
}
prototypeExtend(Class2, Class1, Class3);
var obj = new Class2;
console.log(obj);
【问题讨论】:
-
这可能是一个意见问题。对我来说:实现可读代码的方法并不多。这就是为什么像 Dojo 这样的许多 JS 工具包添加了更高级的类型系统的原因。不过,我最喜欢的是转桩语言 TypeScript (typescriptlang.org)
标签: javascript inheritance constructor prototype