是否可以这样做:
var hammer = new Hammer(); // create a new instance
hammer(nail); // really call Hammer.prototoype.hit(object);
我可以在原始对象上找到它,但在创建对象的新实例时却不能。这就是我遇到的:
function Hammer(options) {
this.config = options.blah;
this.hit(/* ? */);
return this;
}
Hammer.prototype.hit = function(obj) {
// ...
}
当我调用构造函数时,我想传递特殊选项 - 而不是要触及的指甲。但是,当我稍后再打电话时,我想传递一个钉子。我错过了什么。
答案 0 :(得分:3)
一种解决方案是根本不创建构造函数:
var hammer = newHammer();
hammer(nail);
hammer.clean();
function newHammer(options) {
var config = options.blah;
hit.clean = clean;
return hit;
function hit(obj) {
// ...
}
function clean() {
// ...
}
}
对我而言,这比解决构造函数和原型更清晰。