JS继承
1.对象冒充
function ClassA(sColor){
this.color = sColor;
this.sayColor = function(){
}
}
function ClassB(sColor){
相当于重新定义了在ClassA中的方法
this.newMethod = ClassA;
this.newMethod(sColor);
delete this.newMethod;
}
2.call及apply
function test(t1,t2){
alert(this.color);
}
var obj = new Object;
obj.color = "red";
test.call(obj,t1,t2);
test.apply(obj,new Array(t1,t2));
function ClassA(sColor){
this.color = sColor;
this.sayColor = function(){
}
}
function ClassB(sColor){
//相当于重新定义了在ClassA中的方法
// this.newMethod = ClassA;
//this.newMethod(sColor);
//delete this.newMethod;
//改为
ClassA.call(this,sColor);或ClassA.call(this,new Array(sColor));
}
3.原型链
function ClassA(){
}
ClassA.prototype.color = "red";
ClassA.prototype.sayColor(){
alert(this.color);
}
function ClassB(){
}
ClassB.prototype = new ClassA();
ClassB.prototype.otherMethod //Or otherField
4.混合方式
function ClassA(sColor){
this.color = sColor;
}
ClassA.prototype.sayColor(){
alert(this.color);
}
function ClassB(sColor){
ClassA.call(this,sColor);
}
ClassB.prototype = new ClassA();
ClassB.prototype.otherMethod //Or otherField
浏览器中的JS
对于不支持JS的浏览器的解决方法
<script ><!--
//-->
及<noscript>