我一直试图让它工作一段时间,并一直给我未定义。
function A(first, last){
this.first = first;
this.last = last;
}
A.prototype.concat = function(){
return this.last + this.first;
}
function B(first, last){
A.call(this, first, last);
this.type = 'Long';
}
B.prototype.concat = function(){
A.prototype.concat.apply(this, arguments);
}
var a = new B('A', 'B');
console.log(a.concat());

有人可以帮我弄清楚我错过了什么吗?如果我在A上的concat方法接受一个参数,那么它可以工作,但不是没有它。
答案 0 :(得分:2)
你需要做
B.prototype.concat = function() {
return A.prototype.concat.apply(this, arguments);
//^^^^^^
};
但当然,整个继承点是当你不想拦截任何东西时你不需要包装器函数,但是能够直接调用继承的方法: / p>
B.prototype.concat = A.prototype.concat;
或更好,让类动态地从A
原型继承所有方法:
B.prototype = Object.create(A.prototype);