我只是想知道在处理下面的继承方式时是否有任何缺点? 是否有任何内存泄漏要考虑,比其他继承模式更多的内存使用? 我更喜欢使用下面的“class”模式编码JavaScript(new ...())...我发现其他的继承模式很突兀,只是想出了这个...Javascript继承模式。请反馈?
评论感谢!
// Class A
function A() {
var that = this;
that.hello = function() {
return "HELLO";
}
}
// Class B
function B() {
var zuper = new A();
var that = this;
that.variable = "VARIABLE";
zuper.bye = function() {
return "BYE";
}
zuper.getVariable = function() {
return that.variable
}
return zuper;
}
var b = new B();
alert (b.hello()) // "HELLO"
alert (b.bye()) // "BYE"
alert (b.getVariable()) // "VARIABLE"
================================编辑========= ======================== 我修改了原来的方式,并提出了这个问题。这是否来自同一个问题,因为前一个挨(创建一个B,(A和B计)时创建的两个对象) 见B中
// Class A
function A() {
var that = this;
that.publicProperty = "PUBLIC_PROPERTY";
var privateProperty = "PRIVATE_PROPERTY";
that.hello = function() {
return "HELLO";
}
that.getPrivateProperty = function() {
return privateProperty;
}
that.overrideThis = function() {
return "NO_PLEASE_NO";
}
}
// Class B
function B(a, b, c) {
A.apply(this, arguments);
this.variable = "VARIABLE";
var privateVariable = "PRIVATE_VARIABLE";
this.bye = function() {
return "BYE";
}
this.getVariable = function() {
return this.variable
}
this.getPrivateVariable = function() {
return privateVariable;
}
this.getAandB = function() {
return a + b;
}
this.getFromSuperPublicPropery = function() {
return this.publicProperty;
}
this.overrideThis = function() {
return "MUHAHAHA";
}
}
var b = new B("aaa", "bbb");
alert (b.hello()) // "HELLO"
alert (b.bye()) // "BYE"
alert (b.getVariable()) // "VARIABLE"
alert (b.getPrivateVariable()) // "VARIABLE"'
alert (b.getAandB()) // "aaabbb"
alert (b.getFromSuperPublicPropery()) // "PUBLIC_PROPERTY"
alert (b.getPrivateProperty()) // "PRIVATE_PROPERTY"
alert (b.overrideThis()) // MUAHAHAA
function C() {
A.apply(this, arguments);
}
var c = new C();
alert (c.overrideThis()) // "NO_PLEASE_NO"
alert (c.bye()) // Expecting an exception here! Correct!
这不是继承。看看如何http://stackoverflow.com/questions/7486825/javascript-inheritance – hungryMind