var f = function(){ this.fname = 'F Function'; }; //invoke from bar and bar2 func f.prototype.sayName = function(){ alert(window == this); // when invoke from bar then true, bar2 then false alert(this.fname); //when invoke from bar then 'undefined', bar2 then 'F Function' }; //invoke sayName func in setTimeout f.prototype.bar = function(){ setTimeout(this.sayName,1000); // or //var that = this; //setTimeout(that.sayName,1000); alert(window == this) remain show false in sayName fun }; //invoke sayName func in setTimeout f.prototype.bar2 = function(){ var that = this; setTimeout(function(){that.sayName()},1000) } var ins = new f(); ins.bar(); //true 'undefined' ins.bar2(); // false 'F Function'
以上例子能解释 this 在setTimeout 中的 含义。
原因(https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout#The_%27this%27_problem):
相关推荐
关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...
在上面的代码中,我们使用了一个变量oLi来存储当前函数的this对象,然后在setTimeout函数中使用oLi对象来代替$(this)。这样,我们就可以正确地使用$(this)对象了。 四、this关键字的使用规则 在JavaScript中,this...
在这个例子中,`getNumLater`方法内的`setTimeout`回调函数中的`this`不再指向`Obj`实例,而是`window`,导致`console.log(this.num)`打印出`window.num`的值,而`window.num`未定义,所以是`0`。 为了确保`this`在...
### JS中setTimeout()的用法详解 #### setTimeout()概述 `setTimeout()` 是JavaScript中用于设置一个函数或代码段在指定时间后执行的函数。它是`window`对象的一个方法,通常被用于异步编程、设置延时任务、动画...
在JavaScript编程中,`setTimeout`是一个非常常用的函数,它用于在指定的时间(以毫秒为单位)后调用一个函数或者执行某段代码。这个功能对于实现延迟执行、动画效果或者定时任务等场景非常关键。在本文中,我们将...
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 代码如下: function obj() { this.fn = function() { alert(...
这是因为`setTimeout`回调函数的上下文环境并不是Vue实例,因此`this`关键字在这个环境中通常指向`window`对象(在浏览器环境中),而不是我们期望的Vue组件实例。这导致尝试通过`this`来更改组件状态时,变量的更新...
在这个例子中,`this`指向全局对象`window`,因为在`a()`的调用中没有任何其他绑定规则适用。 ##### 隐式绑定 隐式绑定发生在一个函数作为另一个对象的方法被调用时。例如: ```javascript function sayHi() { ...
在实际开发中,掌握如何合理使用setTimeout,以及如何处理setTimeout中this的绑定问题,对于提高Vue.js应用的用户体验和交互性能是非常重要的。希望本文能够对学习和使用Vue.js的开发者们有所启发和帮助。
`setTimeout`回调函数中的`this`指向问题,通常是由于异步执行的特性导致的。 1. **`setTimeout`的工作原理** `setTimeout`接收两个参数:一个回调函数和一个时间间隔(以毫秒计)。它会将回调函数放入事件队列中...
本文将深入讲解JavaScript中的两个重要定时器函数:`setTimeout`和`setInterval`。 首先,`setTimeout`函数用于在指定延迟时间后执行一次函数或代码片段。其基本语法如下: ```javascript var timeoutID = window....
因此,this.x的输出可能是100(如果在严格模式下或在Node.js环境中,this保持为obj),也可能是undefined(在浏览器环境中,this可能变为window对象)。 另外,箭头函数改变了this的绑定方式。在ES6中,箭头函数...
### JavaScript中的`window.setTimeout()`详解 #### 一、概述 在JavaScript编程中,`window.setTimeout()`函数是一个非常重要的异步编程工具,它允许开发者在指定的时间后执行特定的代码片段。这一特性对于实现...
当回调函数是一个对象的方法时,`setTimeout` 中的 `this` 不再指向原来的对象,而是默认指向全局环境(在浏览器中通常是`window`对象)。如果需要保持原来的上下文,可以使用 `bind` 方法或者箭头函数来确保正确的...