关于this问题
对于关键字this,其实很好理解,谁调用我就指向谁。下面举个例子说明:
其实这也是在学习闭包中的一个案例:
var name = "The window";
var obj = {
name : "The Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(obj.getNameFunc()());
很多博客中都是利用的这个例子,但是大部分博客说这个代码的结果是The window. 其实这是错误的。
我们仔细分析下:
第一步:obj.getNameFunc() 这一步很明显就可以看出我们的调用者是obj;而此时返回了一个函数对象,我们假想一个中间变量temp 接收这个对象。然后执行第二步。
第二步:从第一步中得知运行到这里了
temp();然后此时调用对象为谁,这里并没明确指出,然而它所处的容器是什么,恰恰是我们的window对象,所以可想而知,在return
this.name;这步中的this恰好指的是window。 然后window对象本身就有个默认属性name,且默认值为""。
由以上得知弹出的对话框中的值为一个空字符串"", 不相信你们可以去测试验证。(如有误,请大神指出,谢谢。)
随机推荐
- 【week3】词频统计 单元测试
使用Eclipse 集成的Junit进行单元测试.单元测试的核心包括断言.注解. 测试代码如下: @BeforeClass // 针对所有测试,只执行一次,且必须为static void public ...
- php缓存技术——memcache常用函数详解
php缓存技术——memcache常用函数详解 2016-04-07 aileen PHP编程 Memcache函数库是在PECL(PHP Extension Community Library)中, ...
- Swoole和Swoft的那些事 (Http/Rpc服务篇)
https://www.jianshu.com/p/4c0f625d5e11 Swoft在PHPer圈中是一个门槛较高的Web框架,不仅仅由于框架本身带来了很多新概念和前沿的设计,还在于Swoft是一 ...
- ORA-00933 SQL命令未正确结束 INSERT INTO ... SELECT
最近在修改数据库存储过程时,出现了一个ORA-00933错误, 执行的是 INSERT INTO...SELECT 语句,具体语句如下: INSERT INTO BASP_DX.QLR@GT(BDCD ...
- 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组+离散化
题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一 ...
- hdu 1851(A Simple Game)(sg博弈)
A Simple Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)Tot ...
- [JSOI2009]计数问题 二维树状数组
---题面--- 题解: 二维树状数组的板子题,,,学了这么久第一次写二维树状数组,惭愧啊. 怎么写就不说了,看代码吧. 跟普通的是一样的写法 #include<bits/stdc++.h> ...
- NVIDIA TensorRT 让您的人工智能更快!
NVIDIA TensorRT 让您的人工智能更快! 英伟达TensorRT™是一种高性能深度学习推理优化器和运行时提供低延迟和高通量的深度学习推理的应用程序.使用TensorRT,您可以优化神经网络 ...
- 【BZOJ5296】【CQOI2018】破解D-H协议(BSGS)
[BZOJ5296][CQOI2018]破解D-H协议(BSGS) 题面 BZOJ 洛谷 Description Diffie-Hellman密钥交换协议是一种简单有效的密钥交换方法.它可以让通讯双方 ...
- bzoj 1111 [POI2007]四进制的天平Wag 数位Dp
1111: [POI2007]四进制的天平Wag Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 302 Solved: 201[Submit][St ...