首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

9.关于scope跟createDelegate()

2012-10-06 
9.关于scope和createDelegate()关于JavaScript中this的使用,这是一个由来已久的问题了。我们这里就不介绍它

9.关于scope和createDelegate()

关于JavaScript中this的使用,这是一个由来已久的问题了。

我们这里就不介绍它的发展历史了,只结合具体的例子,告诉大家可能会遇到什么问题,在遇到这些问题时EXT是如何解决的。

在使用EXT时,最常碰到的就是使用Ajax回调函数时出现的问题,如下面的代码所示:



现在的HTML 页面中有一个text输入框和一个按钮。我们希望按下这个按钮之后,能用Ajax去后台读取数据,然后把后台响应的数据放到text中,实现过程如下:

function doSuccess(response) { this.dom.value = response.responseText; } Ext.lib.Ajax.request( 'POST', '08.txt', {success:doSuccess.createDelegate(text)}, 'param=' + encodeURIComponent(text.dom.value) );

createDelegate只能在function上调用,它把函数里的this强行指向我们需要的对象,
然后我们就可以在回调函数doSuccess里直接通过this来引用createDelegate()中指定的这个对象了。
它可以作为解决this问题的一个备选方案。

如果让我选择,我会尽量选择scope,因为createDelegate是要对原来的函数进行封装,重新生成function对象。
简单环境下,scope就够用了,倒是createDelegate还有其他功能,比如修改调用参数等。

热点排行
Bad Request.