js中的this
来源:互联网 发布:hermite矩阵的转置 编辑:程序博客网 时间:2024/06/08 04:20
function juggle(){ var result = 0; for (var n = 0; n < arguments.length; n++){ result += arguments[n]; } this.result = result;}var ninja1 = {};var ninja2 = {};juggle.apply(ninja1, [1, 2, 3, 4]);juggle.call(ninja2, 5, 6, 7, 8);assert(ninja1.result === 10, "juggled via apply");assert(ninja2.result === 26, "juggled via call");
this的不同调用方式
1.全局this以及一般函数中的this(指向全局对象)
console.log(this == window)//trueconsole.log(this.document === document);//truefunction f1(){return this;}var f2 = function(){return this;}console.log(f2() === window);//trueconsole.log(f1() === window);//true
2.作为对象方法里函数的this(指向对象本身)
var f2 = {o : 1,f1 : function(){return this;}}console.log(f2.o === 1);//trueconsole.log(f2.f1() === f2);//true
同样的道理:
var o = {o1 : 1,o2 : 2}var geto1 = function(){return this.o1;}o.geto1 = geto1;console.log(o.geto1() === o.o1);//true
3.原型链中的this(指向该对象本身而非原型链上的对象)
var o = {o1 : 1,o2 : 2,f : function(){return this;}}var obj = Object.create(o);alert(obj.o1);//1alert(obj.f() === obj);//truealert(obj.f() === o);//false
4.构造器中的this(指向新生成的对象)
5.apply/call中的this
function juggle(){ var result = 0; for (var n = 0; n < arguments.length; n++){ result += arguments[n]; } this.result = result;}var ninja1 = {};var ninja2 = {};juggle.apply(ninja1, [1, 2, 3, 4]);juggle.call(ninja2, 5, 6, 7, 8);assert(ninja1.result === 10, "juggled via apply");assert(ninja2.result === 26, "juggled via call");
总结:
1)最普通的函数调用模式:函数上下文是 window
2)方法调用模式:函数上下文是拥有这个方法的对象
3)构造器调用模式:函数上下文是新生成的对象
4)apply() or call():函数上下文可以是我们指定的任何对象
0 0
- js中的this
- js中的this关键字
- 关于js 中的 this
- js中的this详解
- js 中的this
- JS中的this
- JS中的this用法
- js中的this基础
- JS中的this关键字
- 在js中的this
- 【JS】JavaScript中的this
- js中的this
- js 中的this
- js中的this
- JS中的this理解
- js中的this
- JS中的this
- js中的this指针
- apache日志LogFormat参数说明
- Git@OSC 开源中国git与sourceTree联合使用教程
- Windows消息机制
- 关于createFromAsset--转载
- iBatis简单概述
- js中的this
- input、select、textarea兼容不同浏览器样式统一
- Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. S
- CentOS Linux更改MySQL数据库目录位置具体操作
- URL重写指南
- c++库之jsoncpp库
- 数学类网络资源
- pptpd设置翻上网
- android use-feature和market策略