连云港建设部网站,深圳创新投资公司官网,广州网页设计公司招聘,金融网站织梦模板免费下载Atitit.js this错误指向window的解决方案 1.1. 出现地点and解决之道1 1.2. call,apply和bind这三个方法2 1.2.1. Function.prototype.call2 1.3. 在函数内部出现的this#xff0c;指什么要看这个this所在的函数的被调用方式。 不论这个this出现在什么样的函数中#xff0c;层…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.setTimeoutsetTimeout执行的时候this是指向window 作者:: ★(attilax) 绰号:老哇的爪子 全名Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 汉字名艾龙 EMAIL:1466519819qq.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