关于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,且默认值为""。
由以上得知弹出的对话框中的值为一个空字符串"", 不相信你们可以去测试验证。(如有误,请大神指出,谢谢。)
随机推荐
- CEntOS6.5从启动界面直接进入命令行界面
ctrl + alt + F1 ctrl + alt + F2 ctrl + alt + F3 ctrl + alt + F4 ctrl + alt + F5 ctrl + alt + F6 同时按下 ...
- MapperScannerConfigurer的原理
原文地址:http://www.mybatis.org/spring/zh/mappers.html#MapperScannerConfigurer 为了代替手工使用 SqlSessionDaoSup ...
- 【bzoj4444】[Scoi2015]国旗计划 倍增
题目描述 给出一个圈和若干段,问:对于所有的 $i$ ,选择第 $i$ 段的情况下,最少需要选择多少段(包括第 $i$ 段)能够覆盖整个圈? 输入 第1行,包含2个正整数N,M,分别表示边防战士数量和 ...
- CF997B Roman Digits
题意翻译 给你一棵树,每次挑选这棵树的两个叶子,加上他们之间的边数(距离),然后将其中一个点去掉,问你边数(距离)之和最大可以是多少. 题目描述 You are given an unweighted ...
- ARC077C pushpush 递推
---题面--- 题解: 貌似一般c题都是递推... 观察到最后一个插入的数一定在第一个,倒数第二个插入的数一定在倒数第一个,倒数第三个插入的数一定在第2个,倒数第四个插入的数一定在倒数第2个…… O ...
- BZOJ4553:[HEOI2016/TJOI2016]序列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4553 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某 ...
- BZOJ1037 [ZJOI2008]生日聚会Party 【DP】
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2800 Solved: 1654 [Submi ...
- ACE_DEBUG介绍及日志输出
转载于:http://blog.csdn.net/zzjxiaozi/article/details/6642925 ACE_DEBUG 常规的一些输出消息 ACE_ERROR 会提供程序出错 ...
- vector.clear()的内存泄露问题
在使用vector的过程中,经常会遇到以下场景 vector<int> vec; ) { vec.push_back(); vec.push_back(); vec.push_back() ...
- lightoj 1214
lightoj 1214 Large Division (大数除法) 链接:http://www.lightoj.com/volume_showproblem.php?problem=1214 题意 ...