javascript中this的指向
来源:互联网 发布:刻录软件nero免费下载 编辑:程序博客网 时间:2024/06/04 19:43
1.函数作为对象的方法被调用(this指向该对象)
var obj={
a:1,
getA:function(){
console.log(this===obj);
console.log(this.a);
}
}
window.name='global';
(1)function getName(){
console.log(this.name);==》global
console.log(this===window);==》true
}
name:'sven',
getName:function(){
console.log(this.name);==》global
console.log(this===myObject);==》false
}
}
var get=myObject.getName;
console.log(get());
2.1有时候我们会遇到一些困扰,比如在div节点的事件函数内部,有一个局部的callback方法,callback被作为普通函数调用时,callback内部的this指向了window,但是我们往往想让它指向改div节点,见如下代码:
window.id="123";
document.getElementById('div1').onclick=function(){
var that=this;//将that保存起来
console.log(that.id);
var callback=function(){
console.log(that.id);
}
callback();==》div1
}
3.大部分javaScript函数都可以当做构造器使用,构造器的外表和普通函数一样,他们的区别在于被调用的方式。当用new运算符调用函数时,该函数总会返回一个对象,通常情况下,构造函数器里的this就指向返回的这个对象。
var Myclass=function(){
this.name='seven';
}
var obj=new Myclass();
console.log(obj.name);==>seven
3.1但用new 调用构造器时,要注意一个问题:如果构造器显式地返回了一个object类型的对象,那么此次运算结果最终返回这个对象,而不是我们期待的this。
var myClass=function(){
this.name='eleveb'
return {
name:'abb'
}
}
var obj1=new myClass();
console.log(obj1.name);==>abb
3.2主要不是显示地返回一个object类型的对象就不会出现这样子的问题
var myName=function(){
this.name='huang';
return 'anme';
}
var obj2=new myName();
console.log(obj2.name);==>huang
var obj={
a:1,
getA:function(){
console.log(this===obj);
console.log(this.a);
}
}
obj.getA(); ==》1
2.作为普通函数调用(this指向全局对象)window.name='global';
(1)function getName(){
console.log(this.name);==》global
console.log(this===window);==》true
}
getName();
(2)var myObject={name:'sven',
getName:function(){
console.log(this.name);==》global
console.log(this===myObject);==》false
}
}
var get=myObject.getName;
console.log(get());
2.1有时候我们会遇到一些困扰,比如在div节点的事件函数内部,有一个局部的callback方法,callback被作为普通函数调用时,callback内部的this指向了window,但是我们往往想让它指向改div节点,见如下代码:
window.id="123";
document.getElementById('div1').onclick=function(){
var that=this;//将that保存起来
console.log(that.id);
var callback=function(){
console.log(that.id);
}
callback();==》div1
}
3.大部分javaScript函数都可以当做构造器使用,构造器的外表和普通函数一样,他们的区别在于被调用的方式。当用new运算符调用函数时,该函数总会返回一个对象,通常情况下,构造函数器里的this就指向返回的这个对象。
var Myclass=function(){
this.name='seven';
}
var obj=new Myclass();
console.log(obj.name);==>seven
3.1但用new 调用构造器时,要注意一个问题:如果构造器显式地返回了一个object类型的对象,那么此次运算结果最终返回这个对象,而不是我们期待的this。
var myClass=function(){
this.name='eleveb'
return {
name:'abb'
}
}
var obj1=new myClass();
console.log(obj1.name);==>abb
3.2主要不是显示地返回一个object类型的对象就不会出现这样子的问题
var myName=function(){
this.name='huang';
return 'anme';
}
var obj2=new myName();
console.log(obj2.name);==>huang
4.Function.prototype.call或Function.prototype.apply调用
跟普通的函数调用相比,用Function.prototype.call或Function.prototype.apply可以动态地传入函数的this:
var obj1={
name:'seven',
getName:function(){
return this.name
}
}
var obj2={
name:'hellow'
}
console.log(obj1.getName.call(obj2));==>hellow
阅读全文
1 0
- javascript 中 this 的指向
- JavaScript中 this 的指向
- JavaScript中this的指向
- javascript中this的指向
- javaScript中this的指向
- Javascript中this的指向
- JavaScript中this指向
- javascript中this的指向问题
- javascript中this指向问题的综合
- JavaScript中this的指向问题
- JavaScript中this的指向问题
- javascript中this对象的指向问题
- JavaScript中this的指向问题
- 详解JavaScript中this的指向
- javaScript中关于this的指向
- javascript中this的指向详解
- JavaScript-this的指向
- javascript的this指向
- OpenGL的三个事件方法 如:openGLController_OpenGLDraw
- linux ./configure 的参数详解
- PHP结合Linux的cron命令实现定时任务
- python爬虫入门教程(一):开始爬虫前的准备工作
- 33:计算分数加减表达式的值
- javascript中this的指向
- 【安全牛学习笔记】实验环境
- TS流相关问题
- Vue相关(过渡动画)
- PAT (Basic Level) Practise (中文) 1041. 考试座位号(15)
- usbnet驱动深入分析-usb虚拟网卡host端
- Java服务部署上linux主机及shell脚本启停
- 分组统计
- Meta http-equiv属性详解