`
libmw
  • 浏览: 7109 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

悲催的this悲催的new

 
阅读更多
今天才发现,原来我对this的理解竟然如此模糊,原来我对new的了解也没有那么多。。
伤心 

早晨无意中写了一段代码:
function test(){
	this.a=100;
	console.log(a);
}
try{
	new test();
}catch(e){
	console.log(e);
}

try{
	test();
}catch(e){
	console.log(e);
}

try{
	new test();
}catch(e){
	console.log(e);
}

输出:
ReferenceError: a is not defined
100
100

最开始一直没想通,凭啥第一次new访问不到a,而执行了test函数后就可以访问a了呢?
this.a是给function加属性,不应该影响全局变量啊。
后来把这段代码贴到部门群里面,很快就北京chao君鄙视了。。伤心。。
超君说了几个关键字,new的原理、作用域、全局变量
我还是没有搞懂,我知道是这些东西没弄明白,但是我不知道到底关键再哪里。
chaojun又说 第一次new a没值,第二次给全局a赋值  第三次当然就可以取值了
什么?第二次的a是全局的?
我想了一下,再加上另外两个同事的提醒,突然恍然大悟
function test(){}运行在window域中不就相当于window.test = function(){}么?
顿时恍然大悟,自己竟然连这个最基本的东西都没搞清楚。。
悲哀呀  

其实this到底instanceof谁,得看func被怎么调用,全局域下执行test就相当于
test.call(window)所以this当然指向全局域了。
而new的时候之所以会报错,是因为在new test的时候会用一个临时对象来call test,此时的console.log(a),访问的a是全局的a,因为在tst里面没有申明过a。所以访问不到,而我们执行了test后,通过this.a给a赋值,当然第二次new test的时候就能访问到a了。

看起来很简单,不过真正要领会到,以我这种智商,还真不知道行不行。。
 
0
2
分享到:
评论

相关推荐

    悲催情人节PPT模板.ppt

    悲催情人节PPT模板.ppt

    前苏宁易购员工亲历- 悲催的家政O2O地推.docx

    前苏宁易购员工亲历- 悲催的家政O2O地推.docx

    sql学习 索引去哪儿_move 致索引失效的悲催事.sql

    sql学习 索引去哪儿_move 致索引失效的悲催事.sql

    世界上最悲催的教师辞职申请书.doc

    最近,一份名为“世界上最悲催的教师辞职申请书”的文档在网络上流传开来,虽然以幽默诙谐的方式呈现,但其中所蕴含的深层次含义却值得我们细细品味。 首先,文档中描述的诸多情形,诸如教师在茶杯中发现昆虫、被...

    两个程序悲催的进化旅程

    后记:用这个漫画是想讲述进程、线程、协程这些基本概念的来龙去脉,为什么会出现这种技术,解决了什么问题。其实计算机发展到今天,本质上没什么变化,就是计算能力越来越快,存储能力越来越大。...

    悲催的语录.doc

    这些语录虽然源自《悲惨世界》这部文学作品,但其中蕴含的深刻哲理和人生智慧对于IT行业的学习和工作同样具有启示作用。以下是对这些语录中与IT行业相关知识的理解: 1. "世界上最宽阔的是海洋,比海洋更宽阔的是...

    科目二考试心得-悲催的失误

    NULL 博文链接:https://xiaowei-qi-epro-com-cn.iteye.com/blog/1882311

    android-14 不必用悲催的网速从官网下载(本人已下载完毕)

    在Android开发过程中,SDK(Software Development Kit)是必不可少的工具,它包含了开发、调试和运行Android应用程序所需要的所有组件。本文将详细讲解Android SDK中的Platform,特别是针对Android 4.0 (Ice Cream ...

    32位PLSQL访问64位服务器(自己整理过的)

    标题所述的问题是32位版本的PLSQL Developer尝试连接到64位Oracle服务器时遇到的兼容性问题。这是因为PLSQL Developer本身是32位应用程序,无法直接与64位Oracle客户端的oci.dll库进行交互。以下是一些详细的步骤来...

    Android例子源码简单天气获取项目谷歌接口

    这个项目实现的功能与上一个天气项目差不多,都是获取天气数据,不过这个项目悲催就悲催在使用的是google提供的天气接口。在我朝范围内是没法正常获取到数据的原因你懂得,尸体仅供参考。使用到的技术比上一个要多...

    C++编的通讯录

    《C++实现的图形用户界面通讯录系统》 在信息技术高速发展的今天,通讯录软件已经成为了日常生活和工作中不可或缺的一部分。本项目是用C++编程语言实现的一个带有图形用户界面(GUI)的通讯录系统,旨在提供一个...

    Windows2003分区丢失数据恢复工具 R-Studio

    正好公司运行程序又全在那个分区,悲催的搞了2天,还好找到了这个软件,恢复的数据还能用,不然悲催了,哈哈~~装了服务器系统的兄弟如果丢失分区了,建议拷回去试试,不过恢复数据都是看rp的,还是平时勤快点的好

    悲催的存储工程师 SAN故障经验的分享

    一般来说,企业级主存储是相当稳定的,如果没有强壮的存储设备,就不能奢望应用程序可靠,它们本身就有一大堆问题,如果存储也闹别扭,事情只会变得更糟,这就是为什么企业愿意把大部分IT预算用于购买最好,最可靠的...

    -实验报告:大二下学期残留的实验流到了大三上学期悲催

    实验报告是学生在进行实验课程后,对实验过程、观察结果和分析的一种书面总结,它体现了学生的实践能力和理论知识的结合。在这个特定的案例中,标题提到的是一个实验报告,可能是一个大学大二下学期未完成的项目,...

    PowerBuilder 7.0.3补丁

    特此献给像我一样悲催的还在用PB7的。 Release Notes for PowerBuilder[R] Version 7.0.3 (c) 1991-2000 Sybase, Inc. and its subsidiaries. All rights reserved. Updated 12/06/00 ____________________________...

    【ChatGPT入门必学】了解ChatGPT

    曾经在遇到繁杂问题时,特别是上下文笔记复杂的时候,即使通过各种搜索引擎也无法解决,一度非常悲催!!但 ChatGPT 的出现打破了这一局面,它能够站在上帝视角通过我们输入的上下文来分析并给出解决方案。 我...

Global site tag (gtag.js) - Google Analytics