JS在对象实例化后从构造函数运行函数

时间:2015-06-11 18:12:20

标签: javascript

是否可以这样做:

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) {
  // ...
}

当我调用构造函数时,我想传递特殊选项 - 而不是要触及的指甲。但是,当我稍后再打电话时,我想传递一个钉子。我错过了什么。

1 个答案:

答案 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() {
        // ...
    }
}

对我而言,这比解决构造函数和原型更清晰。