Javascript对象本身的传递
寻找一些真正快速的帮助Javascript对象本身的传递,javascript,jquery,javascript-objects,Javascript,Jquery,Javascript Objects,寻找一些真正快速的帮助 contactForm={ that: this, lilfield: 'I just equal this', fields: new Array("hc_name","hc_email","hc_telephone"), submit_button: jQuery("#hc_submit"), init: function(){ that.lilAlert(); }, lilAlert: func
contactForm={
that: this,
lilfield: 'I just equal this',
fields: new Array("hc_name","hc_email","hc_telephone"),
submit_button: jQuery("#hc_submit"),
init: function(){
that.lilAlert();
},
lilAlert: function(){
alert("lets pump this out");
}
}
上面只是一个例子,但实际上我试图实现的是,可以用于继续调用的变量,而不是引用对象“contactForm”本身。另外,这比这更安全一点,因为它会在事件上自动传递,例如使用jQuery单击等。您将其过度复杂化;只要调用
this.lilAlert()
,只要在contactForm
上调用init()
,它就可以正常工作
contactForm.init(); // this will work;
你把它复杂化了;只要调用
this.lilAlert()
,只要在contactForm
上调用init()
,它就可以正常工作
contactForm.init(); // this will work;
两件事
that
指向创建contactForm的this
,而不是您期望的实际contactFormthat
是联系人表单的一个属性,因此您需要通过this.that
或contactForm.that
访问它,这违反了最初的目的
init: function(){
var that = this;
that.lilalert();
}
如果您只想避免
this
欺骗,那么另一种方法是使用闭包(因此,通过this
使用词汇、静态范围而不是动态绑定)
两件事
that
指向创建contactForm的this
,而不是您期望的实际contactFormthat
是联系人表单的一个属性,因此您需要通过this.that
或contactForm.that
访问它,这违反了最初的目的
init: function(){
var that = this;
that.lilalert();
}
如果您只想避免
this
欺骗,那么另一种方法是使用闭包(因此,通过this
使用词汇、静态范围而不是动态绑定)
从这个意义上讲,它确实工作得很好。但假设我做了这个,点击action:function(){this.lilAlert();},然后从jQuery绑定调用它,比如:jQuery(#element”).bind('click',contactForm.clickAction);现在我们将遇到问题,因为当从对象范围引用时,这将成为单击的元素而不是对象。@David;您所需要做的就是将其包装在一个匿名函数中,就像我对
setTimeout
示例所做的那样<代码>jQuery(“#元素”).bind('click',function(){contactForm.clickAction})代码>从这个意义上讲,它确实工作得很好。但假设我做了这个,点击action:function(){this.lilAlert();},然后从jQuery绑定调用它,比如:jQuery(#element”).bind('click',contactForm.clickAction);现在我们将遇到问题,因为当从对象范围引用时,这将成为单击的元素而不是对象。@David;您所需要做的就是将其包装在一个匿名函数中,就像我对setTimeout
示例所做的那样<代码>jQuery(“#元素”).bind('click',function(){contactForm.clickAction})代码>你在找吗?你在找吗?嗯,所以实际上我想做的是不可能的?没有聪明的解决办法?嗯,所以实际上我想做的是不可能的?没有聪明的解决办法?