理解里面的用法
understanding the usage of this inside
本文关键字:用法 更新时间:2023-09-26
我正在浏览$。在jQuery中有所不同,遇到了以下示例:
$.fn.bindOnce = function( event, callback ) {
var element = $( this[ 0 ] ),
defer = element.data( "bind_once_defer_" + event );
if ( !defer ) {
defer = $.Deferred();
function deferCallback() {
element.unbind( event, deferCallback );
defer.resolveWith( this, arguments ); // What is `this` and `arguments` here ?
}
element.bind( event, deferCallback )
element.data( "bind_once_defer_" + event , defer );
}
return defer.done( callback ).promise();
};
你可以看到同样的例子这里,现在的代码不是太复杂,但有一些东西不是很有意义,例子,看看下面的代码片段:
function deferCallback() {
element.unbind( event, deferCallback );
defer.resolveWith( this, arguments );
}
代码是相当标准的,我不明白的是什么是this
指向上面的代码?我没有线索,这是在上面的代码指向什么。
我也不明白在上面的代码片段中resolveWith是什么部分。我唯一的猜测是resolveWith()
会导致执行下面这行代码:
return defer.done( callback ).promise();
我对此也不太确定。
无法理解上面的代码片段中resolveWith的作用代码。
链接页
代码的工作方式如下:
-
检查元素是否已经为给定附加了deferred事件
-
如果没有,创建它并使它在事件发生时被解决第一次开火
-
然后将给定的回调附加到延迟的回调并返回承诺
.resolveWith()
可以在.done()
, .fail()
, .notify()
回调中设置context
, this
这将指向什么?
我相信他们打算让this
关键字指向$.fn.bindOnce
链接的元素,但它在一个不具有相同作用域的新函数中被引用。
你可以告诉deferCallback它的this
应该是什么,尽管.bind()
:
// use `.bind()` to set the `this` keyword in
// deferCallback to the `this` in bindOnce
element.bind( event, deferCallback.bind(this) );
目前,没有.bind()
, this
将是window
。
相关文章:
- 原型和用法 Javascript
- 在IntelliJ IDEA中,如何将JS文件从“;查找用法“;使用TypeScript时的结果
- 限制npm依赖模块's require(隔离)的用法
- 引导工具提示用法,在搜索字段中
- 用于添加两个数字的javascript闭包的用法
- javascript中不带转义字符串的${variable}用法
- 了解插件代码中$.each内部传递的参数的用法
- Chris Coyer中call()的用法'的自定义事件示例
- regex中连字符的这种用法有效吗
- 咕噜咕噜/咕噜咕噜源文件目标用法
- 不是 solr 查询中的条件用法
- Web Crypto API JWK 在 Python 中的用法
- YUI Compressor Maven Mojo缩小javascript的用法
- 包括外部javascript;不遵守闭包用法
- Javascript模块用法
- Javascript window.postmessage()帮助-don'我不了解用法
- javascript中for循环的用法
- 为Google Matrix指定API密钥API Javascript检索用法
- JSRender模板自定义标记用法
- html内联事件处理程序和非引人注目的事件处理程序之间括号的用法不同