关于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,且默认值为""。
由以上得知弹出的对话框中的值为一个空字符串"", 不相信你们可以去测试验证。(如有误,请大神指出,谢谢。)
随机推荐
- sublime text 3103 怎么设置中文
1.shift+ctrl+p调出插件管理,输入install package,按enter键,开始安装. 2.搜索chinese即可,下载安装插件包即可 原文:http://blog.csdn.net ...
- Git 应用补丁报错 “sha1 information is lacking or useless”
因为现场代码在客户局域网内,不能连接到公司网络,所以一般更新的时候都是打补丁, 然后在客户现场应用补丁,但是最近在应用补丁的时候出现了如下问题: ... fatal: sha1 information ...
- MySQL错误解决10038
[错误解决]本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止 标签: mysql计算机 2016-12-01 17:49 5508人阅读 评论(2) 收藏 举报 ...
- 委托,事件,lambda表达式
开篇说明三个点: 委托是一种类型 事件是委托的实例 lambda表达式是一个方法(匿名方法) [未完待续]
- 请问:在delphi中怎样判断DBgrid中数据是否被修改,以便在退出窗口时加以提示
若DBGrid.DataSource.DateSet为ADOQuery1,这样试一下:if ADOQuery1.Modified then ... procedure TForm1.FormClose ...
- HSF原理
HSF(High-speed Service Framework),高速服务框架,是阿里系主要采用的服务框架,其目的是作为桥梁联通不同的业务系统,解耦系统之间的实现依赖.其高速体现在底层的非阻塞I/O ...
- vdbench和fio测试磁盘性能的对比总结
一.安装 1.安装vdbench,首先安装java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...
- poj 1422 Air Raid (二分匹配)
Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6520 Accepted: 3877 Descript ...
- P1483 序列变换
题目描述 给定一个由n个整数构成的序列,你需要对它进行如下操作: 操作1:输入格式“1 x y”,表示把所有a[kx](k为正整数,kx<=n)都加上y. 操作2:输入格式“2 j”,表示输出a ...
- bzoj 1862: [Zjoi2006]GameZ游戏排名系统 & bzoj 1056: [HAOI2008]排名系统
傻叉了一晚上,把t打成x,然后这题神奇在于输出一段数,不足的不用输出,一开始我的是直接找没有后面就退,然后这样会格式错误囧……然后最后zj的还卡了下空间,于是不用string就过了……string毁一 ...