浅谈javascript的this指向
This的指向大致能够分为下面四类。我们分别举例说明
1. 作为对象的方法调用时。this指向该对象
var obj={
a:1,
getA:function(){
console.log( this==obj); //输出true
console.log(this.a); //输出1
}
}obj.getA();
2. 作为普通函数调用时,this总是指向全局对象,比方说在浏览器中,这个全局对象是window。
window.name="windowname";
var getName=function(){
return this.name;
}
console.log(getName()); //输出windwoname
或者
window.name='windowname2';
var myObject={
name:'yourName',
getName:function(){
return this.name;
}
}
var getName=myObject.getName;
console.log(getName()); //windowname
console.log(myObject.getName());//yourName
3. 作为构造器调用
通常情况下,构造器里的this就指向返回的这个对象。比如:
var myClass=function(){
this.name='yourName';
}
var obj=new myClass();
console.log(obj.name); //输出yourName
可是当new调用构造器时。构造器显示的返回了一个object类型的对象。那么此次运算的终于结果会返回这个对象,不是我们之前期待的this。
假设返回的不是对象是别的比方说string类型的数据,就还是指向原来的this
var myClass=function(){
this.name='yourName';
return ’returnName’ ;
}
var obj=new myClass();
console.log(obj.name); //输出'yourName'
4. Function.prototype.call 或 Function.prototype.apply调用能够动态的改变传入的this的值
var obj1={
name:'name1',
getName:function(){
return this.name;
}
}
var obj2={
name:'name2'
}
console.log(obj1.getName()); //输出name1
console.log(obj1.getName().call(obj2)); /输出name2
至此 第一篇博客写完了。 本文中,我们讲了对thiskeyword做了一些简单的分析。也參考了一些书。在此。对他们表示感谢,假设可以帮助到你。我感到万分荣幸。
让大家见笑了
最新文章
- [delphi]运行cmd命令,并取得输出字符
- SVG DOM常用属性和方法介绍
- const,static,extern简介(重要)
- hdu3231 拓扑序
- web首页设置如下代码可判断用户是用什么设备登录的?
- C++输出四则运算设计题的思路
- Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes
- oracle从各个表取得数据保存到另一个表
- WPF 10天修炼 第九天 - 几何图形
- HTML常用提交按钮
- db2 reorgchk
- (转) 开运算opening_circle和闭运算closing_circle的异同
- oracle 如何查询/修改dmp文件的字符集
- OV7670配置和调试小结
- 超详细的PS抠图方法
- Java设计模式学习记录-简单工厂模式、工厂方法模式
- 洛谷 P1361 小M的作物 解题报告
- 应用“PUSH推送”的5个真相和5个误区
- December 02nd 2016 Week 49th Friday
- Linux ssh开启服务
热门文章
- SeaJS入门
- Oracle审计--AUD$占用空间较大处理方案
- OpenGL实现多层绘制(Layered Rendering) [转]
- 阿里云RDS(云数据库)之产品简介
- PHPCMS V9管理员password忘记怎样改动
- cocos2d-之音乐背景播放
- 【CI】系列三.宿主机KVM配置及vdi与vmdk格式转换等
- The fundamental differences between ";GET"; and ";POST";
- jumpserverv0.5.0 基于 CentOS7安装部署
- mysql添加修改字段