我看到了关于多态可调用对象的文章,并试图让它工作起来,但似乎它们并不真正具有多态性,或者至少它们不尊重原型链。
这段代码输出
这种方法是否不能与原型一起使用,还是我做错了什么?
这段代码输出
undefined
,而不是"hello there"
。这种方法是否不能与原型一起使用,还是我做错了什么?
var callableType = function (constructor) {
return function () {
var callableInstance = function () {
return callableInstance.callOverload.apply(callableInstance, arguments);
};
constructor.apply(callableInstance, arguments);
return callableInstance;
};
};
var X = callableType(function() {
this.callOverload = function(){console.log('called!')};
});
X.prototype.hello = "hello there";
var x_i = new X();
console.log(x_i.hello);