javascript 中的this
来源:互联网 发布:计量型数据定义 编辑:程序博客网 时间:2024/06/05 20:43
Javascript 中的this关键字,记住一句话就行:this指调用函数的那个对象。在一个使用方法调用语法,像 obj.myFunction()或者 obj['myFunction'](),这时this的值为obj。
话是这么说,但是刚看到这话,很难有深入理解,特别是有其他OO语言经验的同学。对于Javascript,如果知道其他OO语言的语法,对于有些概念的理解,你可能是从负数开始,比从零开始都不如~~。当然,如果你对C++、Java或C#有深入理解,那么还是会发现很多共同之处的。
加入了面向对象的概念后,代码从面向过程的一个个的函数调用,变成了针对对象进行操作。我们可以向下面这样写代码
public class A{ private int i; public void methodA() {} public void methodB(int a) { this.i =a; }}...A a = new A();a.methodA();a.methodB();
实际上,对于methodA和methodB,编译后,可以认为它们长成这样
void methodA(A this){}
void methodB(A this,int a){this.i = a}
this不是平白就有得,是编译器给我们添加的。
需要说明一下:this本身不能变化,this指向的对象可以改变,不同语言表示this本身不能变得语法不一样,所以这里没写。
对于Java或C#这类语言,methodA的第一个参数只能是A对象或其子类。
Javascript是弱对象语言,没法对函数参数的类型进行提前检测。
比如:
function log(){ console.log(this.name);}
相当于
function log( this)//不带类型限制{ console.log(this.name);}
所以,
var a={name:"a"};
a.aLog = log;
a.aLog();
相当于aLog(a),于是this被赋值成a,自然回去找a["name"],找到,输出a
如果直接调用log();在浏览器环境下,相当于log(window);window中,我们还没定义name属性,所以输出undefined
另外多讲一个例子:
function Person(){ this.name = "jzl"; this.age = 25; this.info = function{ console.log(this.name+":"+this.age); }}var p = new Person();
最后一句话,相当于
var p = {};
Person(p);
把p当作this,传进Person函数,函数执行完后,p有拥有了name,age,info属性。
- 【javascript】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用法
- php的bug?echo dirname('d:\中文\sl.txt');为什么只会打印出:d:\来
- 南京邀请赛 K 题 Yet It Is Another World
- 缩小窗口,拉动下方滚动条。背景缺失解决方案
- 实现多线程有两种方法: Thread类继承和Runnable接口实现
- 大数据时代:大数据的应用
- javascript 中的this
- linux terminal使用技巧及代码定位(大部分内容整理得来)
- 健康第一
- 模拟iphone桌面切屏carousel小类库
- Spring MVC framework深入分析
- opencv源码解读
- uboot 参数对应着内核模块的参数 module_param
- Qt Creator 配置Msvc 2012的调试器
- 模拟direct path read