如何将javascript变量绑定到对象

时间:2014-04-17 15:39:20

标签: javascript node.js

我们说我有一个对象:

obj = {func1: function(){return $(h1)};} // notice, there is no $ defined anywhere...

在其他地方我有一条线

jq = require('jQuery');

现在想编写一个函数或者其他东西,它将对象和jQuery作为参数绑定并绑定它以便我可以这样做:

obj2 = myBind(obj, jq);
obj2.func1(); // works 

2 个答案:

答案 0 :(得分:0)

obj = {func1: function(){return $(h1)};} 
     

注意,在任何地方都没有定义$ ...

然后它将保持未定义,除非您在任何父范围(如全局范围)中创建这样的变量。

但是,您无法将变量注入到您没有“拥有”的范围中,您无法从函数引用中访问obj.func1闭包的范围 - 您需要事先将代码放在该范围内。

但是,您可以使用属性而不是变量,例如

var obj = {
    func1: function() {
        return this.$("h1");
    }
};
// later:
obj.$ = require("jQuery");
obj.func1();

答案 1 :(得分:0)

@bergi说的是对的。另一种解决方案也可能是以某种方式使用Function.bind:

var obj = {
  func1: function() {
    return this("h1");
  }
};
obj.func1 = obj.func1.bind(require('jQuery'));
// later:
obj.func1();