_JavaScript单例方法上的.bindAll()?
下面代码中的方法obj2.method1是从另一个对象调用的。 如何绑定“此上下文”,以便从obj2引用obj1_JavaScript单例方法上的.bindAll()?,javascript,binding,underscore.js,Javascript,Binding,Underscore.js,下面代码中的方法obj2.method1是从另一个对象调用的。 如何绑定“此上下文”,以便从obj2引用obj1 var singleton = { obj1 : { a : 5 }, obj2 : { method1 : function(){ this.obj1.a; //undefined } } } 我尝试使用下划线uz.bindAll()-类似于这些行的东西-但失败了 var singleton = { obj1 : {
var singleton = {
obj1 : {
a : 5
},
obj2 : {
method1 : function(){
this.obj1.a; //undefined
}
}
}
我尝试使用下划线uz.bindAll()-类似于这些行的东西-但失败了
var singleton = {
obj1 : {
a : 5
},
obj2 : {
method1 : function(){
this.obj1.a; //undefined
}
},
init : function(){
_.bind(this, obj2.method1)
}
}
singleton.init();
谢谢:)
的结果重新分配singleton.obj2.method2()
:
//in.init():
this.obj2.method1=ujb2.bind(this.obj2.method1,this)
singleton.init()
具有适当的this
,需要明确指定它:
singleton.init.call(singleton)Singleton
模式
的结果重新分配singleton.obj2.method2()
:
//in.init():
this.obj2.method1=ujb2.bind(this.obj2.method1,this)
singleton.init()
具有适当的this
,需要明确指定它:
singleton.init.call(singleton)充分展示。但是请记住,
Singleton
模式,Singleton.obj1.a
可以工作…@ŠimeVidas:Hmm,但我认为另一个对象使用apply调用该方法。我想覆盖…singleton.obj1.a
将起作用…@ŠimeVidas:Hmm,但我认为另一个对象使用apply调用该方法。我想推翻这个…这是一个很好的答案。谢谢:)顺便说一句,在我试图提出一个简单的“助手实用程序”的情况下,你会推荐什么来代替单例模式呢。该实用程序应该存储一组应用程序设置(其中一些需要在init()上初始化),它可以在不同的助手方法中引用这些设置。我认为单例可以,因为其他应用程序对象可以要求这个助手根据给定的参数和设置执行一些常见的计算?再次感谢。这是一个很好的回答。谢谢:)顺便说一句,在我试图提出一个简单的“助手实用程序”的情况下,你会推荐什么来代替单例模式呢。该实用程序应该存储一组应用程序设置(其中一些需要在init()上初始化),它可以在不同的助手方法中引用这些设置。我认为单例可以,因为其他应用程序对象可以要求这个助手根据给定的参数和设置执行一些常见的计算?再次感谢。