Atitit.js this错误指向window的解决方案
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
转载于:https://www.cnblogs.com/attilax/p/5316822.html
Atitit.js this错误指向window的解决方案相关推荐
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1.设置 document.domain为一致 推荐1 2.Apache 反向代理 推荐1 3. ...
- execjs执行js出现window对象未定义时的解决_10个常见的JS语言错误总汇
1. Uncaught TypeError: Cannot Read Property 这是 JavaScript 开发人员最常遇到的错误.当你读取一个属性或调用一个未定义对象的方法时,Chrome ...
- Atitit 使用h5技术( html css js)制作桌面程序gui界面解决方案attilax总结
Atitit 使用h5技术( html css js)制作桌面程序gui界面解决方案attilax总结 1.1. 理解Atwood定律 1 1.2. H5做出个html的ui是很方便的,跨平台 2 1 ...
- Atitit 使用h5技术 html css js 制作桌面程序gui界面解决方案attilax总结
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Atit ...
- atitit.js浏览器环境下的全局异常捕获
atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...
- JS中this指向问题
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
前 言 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面 ...
- Atitit.js模块化 atiImport 的新特性javascript import
Atitit.js模块化 atiImport 的新特性javascript import 1. 常见的js import规范amd ,cmd ,umd1 1.1. Require更多流行3 2. at ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
最新文章
- 破解CMOS SETUP密码诀窍
- 利用license机制来保护Java软件产品的安全
- 一步一步写算法(之克鲁斯卡尔算法 上)
- scrolling=no 无法根据坐标获取元素_三坐标测量仪类型
- CCNA学习笔记3---备份和升级IOS
- Windows 查看端口使用情况
- PHP初级面试题收集
- python安装教程-PyCharm 安装教程(Windows)
- 博文视点大讲堂第40期第一讲:美国TOP60名校逐一点评 圆满结束
- anaconda中更改python版本
- AtomicReference使用场景
- 【推荐】精选行政文书模板大全(调查报告+会议纪要+通知+通告+总结+规定等模板,共177份)
- 通信专业能报国考的计算机类吗,通信工程专业可以报考计算机科学技术类公务员职位么...
- 关于LTE网络质量的参数
- 一、HTML基础(笔记)
- B站CEO陈睿:我们活跃用户仍维持高增长 动能是独特优质内容
- 初学Linux时用到的一点复制,粘贴,删除,创建指令
- 月圆茶润.人婵娟 小茶控·2021中秋茶礼 如“月”而至
- 【Python】Pathlib操作
- 服务器补丁卸载之后显示未副本,打印机无法删除,添加打印机一直变成副本,怎样删除?急需答案?...
热门文章
- 数据结构之图:加权无向图与寻找最小生成树,Python——27
- LeetCode 2105. 给植物浇水 II(双指针)
- LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)
- LeetCode 1652. 拆炸弹(前缀和)
- LeetCode 1256. 加密数字(bitset)
- LeetCode 369. 给单链表加一(递归)
- 程序员面试金典 - 面试题 16.10. 生存人数(自定义优先队列)
- LeetCode 934. 最短的桥(2次BFS)
- 叛乱2正版怎么创服务器,Insurgency Linux Server 叛乱2创建服务器教程(转steam指南)
- hive - 可优化的 10 个地方及详解