Javascript 同一范围级别上的两个几乎相同的函数执行不同的操作
我有一个奇怪的问题,我不能动脑: 我有一个对象,其中有3个元素(对这个问题很重要): 它们在对象中的外观如下所示:Javascript 同一范围级别上的两个几乎相同的函数执行不同的操作,javascript,extjs,sencha-touch,Javascript,Extjs,Sencha Touch,我有一个奇怪的问题,我不能动脑: 我有一个对象,其中有3个元素(对这个问题很重要): 它们在对象中的外观如下所示: app.controllers.login = new Ext.Controller({ /** * @cfg url * Login request URL */ base_url: 'http://resttest.******.com/v1/', remind_url: function() { console.log(this.base_url); return th
app.controllers.login = new Ext.Controller({
/**
* @cfg url
* Login request URL
*/
base_url: 'http://resttest.******.com/v1/',
remind_url: function() { console.log(this.base_url); return this.base_url +'/member/passwordreminder/' },
login_url: function() { console.log(this.base_url); return this.base_url + '/member/login' },
当我调用remind_url时,base_url等于它应该是什么http://resttest.**.com/v1/”),但是当我调用login\u url时,基本url是未定义的
为什么?我猜这是
的问题。当base\u url
未定义时,可能是因为此
是全局对象,而不是您的对象。你有什么东西可以绑定到这个
?例如,在Backbone.js中,视图通常有一行使用下划线.js,如下所示:
_.bindAll(this, 'remind_url, 'login_url', etc);
它将把所有作为回调调用的方法绑定到this
要确认这一点,请将
console.log(this.base\u url)
更改为console.log(this)
,以了解本例中的是什么。感谢Renesis提出了正确的问题
我一直将调用视为一种方法,而不是函数-this.login\u url=未定义,但this.login\u url()未定义。请不要在问题中添加标记。有一个单独的“标签”字段是有原因的。你可能对这个原因是正确的,但考虑到其中一个已经起作用,这可能不是正确的解决方案。我还不能回答我自己的问题,因为我的分数太低了,但我找到了问题的解决方案:感谢Renesis提出了正确的问题!我一直将调用视为一个方法,而不是一个函数-this.login\u url=未定义,但this.login\u url()不是。@Renesis我确实说过“你有什么东西可以绑定到this
?”-我想可能是绑定了,但另一个没有。但无论如何,这显然不是解决办法!
_.bindAll(this, 'remind_url, 'login_url', etc);