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:[email protected]

转载请注明来源: 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

时间: 2024-10-26 03:51:27

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

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

Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处理不能解除,,,按照盗垒能解除了.... 1 3. 使用js 回回调功能处理...还是不能,子能显示个..javaClassName:"java.lang.Throwable",message:"Error"} 2 4. 异常转换器 2 5. 当然如果想要只针对某一个f

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

Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 3. jsonp ,2 4. CORS ,2 5. iframe+post3 6. 回调解决方案>>服务端推送dwr 反向ajax3 7. 服务器中转 3 8. Js跨3 9. 从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案3 10. 参考4 1. 设置 document.do

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

关于js中this指向的理解! this是什么?定义:this是包含它的函数作为方法被调用时所属的对象. 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解有些准确的),那么接下来我会深入的探讨这个问题. 例子1: function a(){ var user = " 小明"; console.log(this.user);

atitit.js的 字符串内容 转义  js处理html

atitit.js的 字符串内容 转义  js处理html 1. js处理html的问题 1 2. js的 字符串内容 转义 1 2.1. 处理流程 1 3. 下面的表格列出了其余的特殊字符,这些特殊字符都可以使用反斜杠来添加到文本字符串中: 2 4. --code 2 1. js处理html的问题 反斜杠问题 引号问题.回车换行造成的语句中断问题.. 2. js的 字符串内容 转义 一个回车 还有一个换行转义 一个引号转义.. 反斜杠转义 2.1. 处理流程 先替换反斜杠.在引号,在回车,在换

js中this指向问题

js中this指向问题老生常谈的问题了,在这里说一下我所理解的层面的this. this 指的是当前对象,如果在全局范围内使用this,则指代当前页面window:如果在函数中使用this,则this指代什么是根据当前函数是在什么对象上调用.我们可以使用call和apply改变函数中this的具体指向. console.log(this === window) // true console.log(window.alert === this.alert) // true console.log

atitit.js 与c# java交互html5化的原理与总结.doc

atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数1 1.3. 事件监听2 2. sendNSCommand2 2.1.1. --------nativeswing的实现2 3. 注册js 事件后台函数3 4. 后台c#3 5. 参考4 1. 实现html5化界面的要解决的策略 1.1. Js交互 Firefox与Chrome也提供了external对象,例如,他们都默认的实现了ope

atitit.js 与c# java交互html5化的原理与总结.doc

atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. sendNSCommand 2 2.1.1. --------nativeswing的实现 2 3. 注冊js 事件后台函数 3 4. 后台c# 3 5. 參考 4 1. 实现html5化界面的要解决的策略 1.1. Js交互 Firefox与Chrome也提供了external对象,比如,他们都

MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案

MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案 版权声明:本文为博主原创文章,未经博主允许不得转载. MyEclipse导入jQuery-1.8.0.min.js等文件的时候有时候会报了一堆missing semicolon的错误.怎么解决这个报错呢?方法如下: 1.选中报错的jquery文件例如“jquery-1.8.0.min.js”. 2.右键选择 MyEclipse-->Exclude From Validation . 3.再右键选择 MyEclips

js的错误设计

正在看<javascript语言精粹>,遇到明显的特点就记录下来,以防看了白看(噗噗~) 为了不误导,形成错误印象,文中 ‘错误设计‘ 写成 ‘现有设计’,’正确设计‘ 写成 ’期待设计‘.然而期待只能是期待,因为他已经被使用的太广泛了...不能说改就改了 1.js中this指向: 函数调用有四种模式,方法调用.函数调用.构造器调用和apply调用模式. 现有设计:其中函数调用模式与其他不同,this被绑定到全局对象. 期待设计:绑到外部函数的this. 2.参数arguments并不是一个真