var AAA = function(str) {
this.strName = str;
this.show = function() {
alert(str);
}
}
var BBB = function(str2) {
this.str2 = str2;
this.show2 = function() {
alert(str2);
}
}
BBB.prototype = new AAA("AAA"); var a = new BBB("abc");
a.show();BBB.prototype = new AAA("AAA");
这样写出来的BBB,都是str="AAA"的了,怎么写能像C++那样BBB可以在生成对象的时候给AAA的str赋值
this.strName = str;
this.show = function() {
alert(str);
}
}
var BBB = function(str2) {
this.str2 = str2;
this.show2 = function() {
alert(str2);
}
}
BBB.prototype = new AAA("AAA"); var a = new BBB("abc");
a.show();BBB.prototype = new AAA("AAA");
这样写出来的BBB,都是str="AAA"的了,怎么写能像C++那样BBB可以在生成对象的时候给AAA的str赋值
// subClass子类,superClass父类
function extend(subClass,superClass){
// 新建一个空的类
var F = function(){};
// 父类的prototype赋给空类
F.prototype = superClass.prototype;
// 空类实例赋给子类的prototype
subClass.prototype = new F();
// 这句很重要,子类的constructor指向子类本身,
// 之前是指向F类的
subClass.prototype.constructor = subClass;
// 申明一个superclass变量用来访问父类
subClass.superclass = superClass.prototype;
// 如果父类的prototype指向了Object的prototype,
// 那么父类的构造函数就指向它自己
// alert(superClass.prototype.constructor == Object.prototype.constructor)
if(superClass.prototype.constructor == Object.prototype.constructor) {
superClass.prototype.constructor = superClass;
}
}
var AAA = function(str) {
this.strName = str;
this.show = function() {
alert(str);
}
}var BBB = function(str2) {
// 调用父类的构造方法
BBB.superclass.constructor.call(this,str2);
this.str2 = str2;
this.show2 = function() {
alert(str2);
}
}// BBB继承AAA
extend(BBB,AAA);var b = new BBB('ccc');
// 调用AAA的方法
b.show();
</script>
var AAA = function(str) {
this.strName = str;
this.show = function() {
alert(str);
}
}
var BBB = function(str2) {
this.str2 = str2;
this.show2 = function() {
alert(str2);
}
AAA.call(this,str2);
}
//BBB.prototype = new AAA("AAA");
var a = new BBB("abc");
a.show();
var AAA = function(str) {
this.strName = str;
this.show = function() {
alert(str);
}
}
var BBB = function(str2) {
this.str2 = str2;
this.show2 = function() {
alert(str2);
}
//下面两种方法都可以
//用call方法
AAA.call(this,str2);
//也可以用apply
//AAA.apply(this,[str2]);
}
//BBB.prototype = new AAA("AAA");
var a = new BBB("abc");
a.show();忘了加些注释