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

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

当我调用构造函数时,我想传递特殊选项 - 而不是要敲什么钉子。但是,稍后调用时,我想传入一个钉子。我错过了一些东西。

最佳答案

一个解决方案是根本不创建构造函数:

var hammer = newHammer();

hammer(nail);

hammer.clean();

function newHammer(options) {
    var config = options.blah;

    hit.clean = clean;

    return hit;

    function hit(obj) {
        // ...
    }

    function clean() {
        // ...
    }
}

对我来说,这是一个比乱搞构造函数和原型(prototype)更简洁的解决方案。

关于javascript - JS在对象实例化后从构造函数运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788379/

相关文章:

javascript - 为了紧凑性而重新声明 var x = obj.prop 是否效率低下?

javascript - 使用 jquery API HTML 的文本转语音

javascript - 原型(prototype)链获取不到Object()?

javascript - 如何在 URL 中传递 javascript 函数?

javascript - 在 json 文件上使用嵌套数组自动完成

javascript - 如何接收上传图片的 URL 并将其传递给 CK Editor 中的 "src"属性?

javascript - 点击函数内的ajax请求干扰执行

javascript - 在特定时间后删除类的所有元素

JavaScript 异步等待在 forEach 循环中不起作用

javascript - $.getJSON 和 $.ajax 无法返回 JSON 对象