如何向前'this'javascript中函数调用的作用域
How forward the 'this' scope to a function call in javascript
如何转发引用正在调用事件侦听器的元素的this
范围?
为例:
<input type=button value="Foo" id=mybutton>
addEvent('mybutton','touchstart', function(){
if(window['touchmoved']==false)
hover();
});
function hover(){
this.value //undefined
}
使用JavaScript Function.call
或Function.apply
方法:
addEvent('mybutton','touchstart', function(){
if(window['touchmoved']==false)
hover.call(this); // `this` of the called hover points to this `this`
});
使用fn.call()
或fn.apply()
来设置this
的值。请参阅参考资料或在MDN申请。
addEvent('mybutton','touchstart', function(){
if(window['touchmoved']==false) {
hover.call(this);
}
});
.call()
和.apply()
都允许您指定this
指针在被调用函数中的位置。
.call()
允许您传递您希望被调用函数接收的特定附加参数,如下所示:
fn.call(this, true, "foo")`
.apply()
用于当你想传递给被调用函数的参数是一个数组时,你只需要像这样传递参数数组:
var args = [true, "foo"];
fn.apply(this, args);
.apply()
通常与内置参数对象一起使用,将现有的参数传递给被调用的函数(尽管也有其他原因使用它):
fn.apply(this, arguments);
你可以在你的hover()方法上使用function.Call()方法,它将调用hover方法。
Call方法的第一个参数是一个值,该值应该在调用方法中分配给this。
例如:addEvent('mybutton','touchstart', function(){
if(window['touchmoved']==false)
{
}
hover.call(this);
});
function hover(){
//this = touchstart event
}
相关文章:
- 正在向构造函数添加作用域变量
- "这个“;函数的作用域无效
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 内部匿名函数如何具有外部函数的作用域
- $uibModal从windowTemplate调用作用域函数
- 角度:创建可以调用作用域函数的自定义指令
- 设置Javascript函数的作用域问题
- AngularJS ng-click不调用作用域上的函数
- 主干-ajax调用中对象和函数的作用域丢失
- 使用 JavaScript 函数的作用域
- JavaScript 自调用函数和作用域
- 角度意外行为.自执行函数调用作用域函数
- 如何从另一个函数调用作用域函数
- 在node.js的循环中调用回调函数的作用域问题
- 如何从Actionscript调用javascript函数以及作用域
- 在onkeydown事件中调用作用域函数
- 为什么在另一个内部调用的函数不能访问外部函数的作用域?
- 如何限定从块内调用的回调函数的作用域
- 从对象调用函数的作用域问题
- AngularJS在路由更改时调用作用域函数