Atitit.js this错误指向window的解决方案

1.1. 出现地点and解决之道1

1.2. call,apply和bind这三个方法2

1.2.1. Function.prototype.call2

1.3. 在函数内部出现的this,指什么要看这个this所在的函数的被调用方式。 不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。例如:  (1) 被直接调用时,this指全局对象window。3

2. ref3

1.1. 出现地点and解决之道

出现地点::: 回调js  methd的时候儿...

解决之道::HRE.exe(mp,this.merge_callback.bind(this));

因为:::

下面说说我的拙见,如有不对,大神请指出。
先看setTimeout(this.sayHello, 1000);
this.sayHello只是传了一个函数引用过去,这里的this指的是foo.prototype,因为JS函数块是作用域,而setTimeout(this.sayHello, 1000); 是在foo.prototype.bar里面。

foo.prototype.bar = function(){

setTimeout(this.sayHello, 1000);

}

所以就相当于

setTimeout(function(){

alert(this.myName);

}, 1000);

属于2、函数调用,this指向window。

setTimeout其实是window.setTimeout,setTimeout执行的时候this是指向window

作者::  ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

1.2. call,apply和bind这三个方法

1.2.1. Function.prototype.call

fun.call(thisArg[, arg1[, arg2[, ...]]])

可以用来指定调用call的函数的this指向(函数体的作用域),在所给定的thisArg(对象)作用域中执行该函数(call的调用者),后面的参数是函数调用过程中需要用到的数据,以逗号分隔的形式给出。

apply函数与call的使用场景类似,不同的地方是在调用参数部分,直接给出的是参数数组,而不是挨个添加,这对于编码来讲,大有裨益,可以直接把参数处理成数组的形式,传递进去,省去不少功夫,也提升了自动化能力

与上面不同的是,bind会返回一个改变this指向的新函数 ,注意这里强调的是新函数,其与之前的使用的不是同一块内存地址,

1.3. 在函数内部出现的this,指什么要看这个this所在的函数的被调用方式。
不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。例如:

(1) 被直接调用时,this指全局对象window。

func();

(2) 被作为构造函数调用时,this指当前正在构建的对象。

new func();

(3) 被作为某个对象A的方法调用时,this指方法所属的对象A。

A.func();

(4) 使用函数的apply或call方法调用时,this指第一个参数B。

func.apply(B, [m, n, ...]);

func.call(B, m, n, ...);

2. ref

JS中的call、apply、bind方法的区别-日拱一卒-微头条(wtoutiao.com).htm

(2 封私信   7 条消息) JS中的this 在不同的地方指向不一样,在哪些地方需要注意? - 知乎.htm

Atitit.js this错误指向window的解决方案的更多相关文章

  1. Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php

    Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...

  2. Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持

    Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 ...

  3. js实现返回顶部功能的解决方案

    很多网站上都有返回顶部的效果,主要有如下几种解决方案. 1.纯js,无动画版本 window.scrollTo(x-coord, y-coord); window.scrollTo(0,0); 2.纯 ...

  4. atitit.js浏览器环境下的全局异常捕获

    atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...

  5. 关于js中this指向的理解总结!

    关于js中this指向的理解! this是什么?定义:this是包含它的函数作为方法被调用时所属的对象. 首先,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁 ...

  6. Atitit.js获取上传文件全路径

    Atitit.js获取上传文件全路径 1. 默认的value只能获取文件名..安全原因.. 1 2. Firefox浏览器的读取 1 3. Html5 的file api 2 4. 解决方法::使用a ...

  7. 如何理解JS中this指向的问题

    首先,用一句话解释this,就是:指向执行当前函数的对象. 当前执行,理解一下,也就是说this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定.this到底指向谁?this的最终指向的 ...

  8. JS中this指向问题和改变this指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  9. Atitit 在线支付系统功能设计原理与解决方案 与目录

    Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...

随机推荐

  1. 14、Flask实战第14天:Flask使用SQLAlchemy

    flask-sqlalchemy使用详解 之前我们用到的SQLAchemy是可以单独使用的,不需要用到Flask 如果我们在Flask框架中使用SQLAchemy,可以使用flask_sqlalche ...

  2. 21、Django实战第21天:课程章节信息

    在课程详情页中,点击"开始学习",就进入到这课程章节信息,这里面包含了两个页面:"章节"和评论 1.把course-video.html(章节).course- ...

  3. 复制对象 copy 与mutable copy

      转载 :  http://blog.csdn.net/u010962810/article/details/18887841   通过copy方法可以创建可变对象或不可变对象的不可变副本,对于不可 ...

  4. Java的ClassLoader机制

    http://blog.chenlb.com/2009/06/java-classloader-architecture.html http://blog.csdn.net/lovingprince/ ...

  5. 【PKUSC 2015】的一道数学题

    有9个人,每三个人中至少有两个互相认识,求证这里面至少有4个人互相认识 PKU官方题解: 引理:二染色K6中一定有同色K3. 证明:考虑某一个点,它一定连出至少三条同色边(不妨设为红边),这三条边连的 ...

  6. HDU 2819 Swap(二分图匹配)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2819 [题目大意] 给出一个棋盘,由白格子和黑格子组成,可以交换棋盘的行列, 使得其主对角线为黑格 ...

  7. [HDU6271]Master of Connected Component

    [HDU6271]Master of Connected Component 题目大意: 给出两棵\(n(n\le10000)\)个结点的以\(1\)为根的树\(T_a,T_b\),和一个拥有\(m( ...

  8. 调试手机上网页 (断点 console timeline 选择dom)

    用手机看网页,越来越多,手机app套个webview的也很多,那该如何调试手机上的页面了?比如 断点,选dom,console,控制台输出,查看内存,== 嗯,万能的的chrome和safari还是帮 ...

  9. java通过Comparable接口实现字符串比较大小排序的简单实例

    /** * 对象比较大小compare的用法 字符串排序 * 练习代码, 给定字符串" nba" "cba" "ncaa" "wb ...

  10. easyUI中datagrid控制获取指定行数的数据

    直接上代码: var rows=$('#detail').datagrid('getRows');//获取所有当前加载的数据行 var row=rows[0];// 行数从 0 开始 项目中代码: v ...