javaScript中this的用法
来源:互联网 发布:linux date格式 编辑:程序博客网 时间:2024/06/06 00:18
一、this作为对象方法调用:
var a=5; var obj={ a:3, b:function(){alert (this.a);} } obj.b();//结果为3
自定义的obj对象,包含a属性,一个b的方法,b方法中的this,指obj这个对象。
但是这个对象是指上级对象,例:
var a=5; var obj={ a:3, b:{a:6, c:function(){alert(this.a); } } } obj.b.c();//6
这里的this指向的对象是mul,mul有一个属性width,一个方法:mulsec。
那么如果this要指向obj这个对象,怎么做呢?
var a=5; var obj={ a:3, b:{a:6, c:function(){alert(this.a); } } } obj.b.c.call(obj);//3 obj.b.c.apply(obj);//3
引申:
call方法:
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
在这里:call方法将mul对象替换为obj对象,调用mul中的方法。
var a=5; var obj={ a:3, b:{a:6, c:function(){alert(this.a); } } } obj.b.c.call();//5 obj.b.c.apply();//5.call 和apply类似
如果call为空,默认调用的是全局对象。
apply调用:和call类似
*(待填坑:apply call的应用)
(待填的坑:函数对象本质
参考文章:http://blog.csdn.net/manaduona123/article/details/5942975 )*
二、this作为构造函数调用
function test(){ this.x = 1; }//构造函数test var o = new test();//实例化test,构造一个对象o alert(o.x); // 1
这里this是指通过构造函数生成的对象o。
三、作为全局对象
var a=this;console.log(a.isNaN());/*true;a作为全局对象,调用全局函数isNaN()*/var x="test";console.log(a.x);/*"test".如果在JavaScript程序中创建了全局变量,那么这个全局变量会成为全局对象中的一个属性。*/
对于JavaScript程序中的this,如果this不属于任何function,那么这个this就指代JS全局对象;如果是浏览器端运行的JS程序,那么这个this就指代window全局对象。
w3cschool建议不适用这种调用方法,
“因为全局对象是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该对象的属性来查询。例如,当JavaScript 代码引用
parseInt() 函数时,它引用的是全局对象的 parseInt 属性。全局对象是作用域链的头,还意味着在顶层 JavaScript
代码中声明的所有变量都将成为全局对象的属性。”
另一个例子:
var x = 1; function test(){ alert(this.x); } test();//1;这里的this也是指全局对象,还不太明白。
*(待填的坑:全局对象。
http://blog.csdn.net/zyz511919766/article/details/7276089
http://www.jb51.net/article/59283.htm)*
- javascript 中this 的用法:
- javascript 中this 的用法
- JavaScript中this的用法
- JavaScript中this的用法
- javaScript中this的用法
- JavaScript中this的用法
- JavaScript中this的用法
- 【javascript】javascript中this的用法
- javascript中this用法
- javascript中this用法
- JavaScript 中 this 用法
- JavaScript中this的一个用法
- javascript中this的四种用法
- javascript中this的四种用法
- 小谈JavaScript中this的用法
- javascript中this的用法详解
- javascript中this的四种用法
- JavaScript中this的用法详解
- Android5.0以上蓝牙能够加载数据 5.0以下加载不了数据
- 关于服务器第一次安装,打不开cms重装的问题
- 晨魅--简单的部门维护操作练习
- 【u219】最长链
- Search in Rotated Sorted Array
- javaScript中this的用法
- 23种设计模式详解
- PAT 1074. Reversing Linked List
- 牢记基础,随时回顾
- 最长回文序列(求出最长的并且打印出来)
- Letter Combinations of a Phone Number
- myAjax(隐藏帧技术)
- MapReduce 调优
- win7和win10系统的安装教程