`
weick
  • 浏览: 70322 次
  • 性别: Icon_minigender_1
  • 来自: 天堂的隔壁
社区版块
存档分类
最新评论

setTimeout中的this

    博客分类:
  • js
 
阅读更多

 

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):

 




 

 

  • 大小: 21.6 KB
分享到:
评论

相关推荐

    解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题

    关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法.docx

    在上面的代码中,我们使用了一个变量oLi来存储当前函数的this对象,然后在setTimeout函数中使用oLi对象来代替$(this)。这样,我们就可以正确地使用$(this)对象了。 四、this关键字的使用规则 在JavaScript中,this...

    详解JS中定时器setInterval和setTImeout的this指向问题

    在这个例子中,`getNumLater`方法内的`setTimeout`回调函数中的`this`不再指向`Obj`实例,而是`window`,导致`console.log(this.num)`打印出`window.num`的值,而`window.num`未定义,所以是`0`。 为了确保`this`在...

    JS中setTimeout()的用法详解

    ### JS中setTimeout()的用法详解 #### setTimeout()概述 `setTimeout()` 是JavaScript中用于设置一个函数或代码段在指定时间后执行的函数。它是`window`对象的一个方法,通常被用于异步编程、设置延时任务、动画...

    向setTimeout传递函数参数

    在JavaScript编程中,`setTimeout`是一个非常常用的函数,它用于在指定的时间(以毫秒为单位)后调用一个函数或者执行某段代码。这个功能对于实现延迟执行、动画效果或者定时任务等场景非常关键。在本文中,我们将...

    Javascript对象中关于setTimeout和setInterval的this介绍

    在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 代码如下: function obj() { this.fn = function() { alert(...

    解决vue的变量在settimeout内部效果失效的问题

    这是因为`setTimeout`回调函数的上下文环境并不是Vue实例,因此`this`关键字在这个环境中通常指向`window`对象(在浏览器环境中),而不是我们期望的Vue组件实例。这导致尝试通过`this`来更改组件状态时,变量的更新...

    this的用法以及改变this指向

    在这个例子中,`this`指向全局对象`window`,因为在`a()`的调用中没有任何其他绑定规则适用。 ##### 隐式绑定 隐式绑定发生在一个函数作为另一个对象的方法被调用时。例如: ```javascript function sayHi() { ...

    关于vue.js中实现方法内某些代码延时执行

    在实际开发中,掌握如何合理使用setTimeout,以及如何处理setTimeout中this的绑定问题,对于提高Vue.js应用的用户体验和交互性能是非常重要的。希望本文能够对学习和使用Vue.js的开发者们有所启发和帮助。

    js代码-setTimeout this指向问题

    `setTimeout`回调函数中的`this`指向问题,通常是由于异步执行的特性导致的。 1. **`setTimeout`的工作原理** `setTimeout`接收两个参数:一个回调函数和一个时间间隔(以毫秒计)。它会将回调函数放入事件队列中...

    理解javascript定时器中的setTimeout与setInterval

    本文将深入讲解JavaScript中的两个重要定时器函数:`setTimeout`和`setInterval`。 首先,`setTimeout`函数用于在指定延迟时间后执行一次函数或代码片段。其基本语法如下: ```javascript var timeoutID = window....

    JS中的this变量的使用介绍

    因此,this.x的输出可能是100(如果在严格模式下或在Node.js环境中,this保持为obj),也可能是undefined(在浏览器环境中,this可能变为window对象)。 另外,箭头函数改变了this的绑定方式。在ES6中,箭头函数...

    JavaScript_window.setTimeout()_的详细用法

    ### JavaScript中的`window.setTimeout()`详解 #### 一、概述 在JavaScript编程中,`window.setTimeout()`函数是一个非常重要的异步编程工具,它允许开发者在指定的时间后执行特定的代码片段。这一特性对于实现...

    setTimeout使用注意事项1

    当回调函数是一个对象的方法时,`setTimeout` 中的 `this` 不再指向原来的对象,而是默认指向全局环境(在浏览器中通常是`window`对象)。如果需要保持原来的上下文,可以使用 `bind` 方法或者箭头函数来确保正确的...

Global site tag (gtag.js) - Google Analytics