恍惚看到自己在博客园的文章,唯一的一篇已经是接近两年前,再看看自己的名字...已然中枪了

从两年前的.net初学者,到现在工作之后阴差阳错转为前端...

两年过去了,现在回想起来,感觉成长的太少...

稀里糊涂的忙工作,技术上进步不大,总是在业务里徘徊...这可能也是大多数程序员的状态.没有在某一领域技术深度.慢慢无休止的新项目,不能再这样下去了.

看到很多技术致富的例子.但是在前端这一领域,好像"专才"的神通有点施展不开.前端更需要的是"通才"...自己需要学习的东西还有很多

再一次拿起博客来,下一次的回顾,希望自己的内心是暖的...

上句不接下句,不明所以的扯淡结束,正题开始:

在面试题里遇到的问题

 var foo = {
bar: function() {
return this.baz;
},
baz: 1
};
(function() {
return typeof arguments[0]();
})(foo.bar)

面试题如上.我以为答案会是"number",结果是"undefined",让我一头雾水. 我记得看书里说过函数在通过对象的方法调用时,this会赋值为该对象的.看来还是没有深入理解...

晚上回去再去翻翻书,待续...

更新内容

 (function(a) {
console.log("形参调用:"+a());
console.log("arguments调用:"+arguments[0]());
})(foo.bar)

先看上面这段修改过的代码.

首先这里的自执行的匿名函数没有什么疑问,问题出在调用函数的方式.这里有两种

  • a()
    js的传参都是复制传递的,也就是说在传递foo.bar时,是将函数bar的引用地址复制传递给了匿名函数.理解为直接定位到了一个function,其效果等同与bar(),这里的this指向了window.所以结果为undefined.从字面理解更直观a()这种调用方式,是函数调用,this将会赋值为window
  • arguments[0]()
    这里就很诱惑人了,先说答案,这里的this指向的是arguments.是不是很奇怪.其实我们被arguments的数组形式迷惑了.arguments实际上是个对象.并不是一个数组.现在问题就明了了.arguments[0]()等同于arguments.a().是方法的调用,自然this是指向arguments对象了

对js执行机制了解甚少,以上结论没有考证,是自己推测得来…欢迎大牛拍砖,指正

两年后的随笔+this的思考的更多相关文章

  1. SpringMVC中ModelAndView的两个jar包引起的思考servlet和portlet

    在使用ModelAndView时,需要去导包,但是有两个包. 检查前台form表单提交的也正确,后台这也没有问题. 后来发现竟然时导包导错误了. 到此,如果是因为到错包问题,应该就解决了. 但是,深入 ...

  2. 武汉新芯:定位存储器制造,两年后或推3D NAND

    武汉新芯集成电路制造公司(XMC)2006成立,2012年底起独立经营,是国有制企业.为了区别于本土的制造巨头SMIC(中芯国际)和华力微电子(HLMC)等,XMC将立足存储器制造.近日,武汉新芯董事 ...

  3. 3星|《深度思考:不断逼近问题的本质》:香奈儿前CEO自传

    深度思考:不断逼近问题的本质 作者是前香奈儿CEO,主要内容是作者的自传,从家庭说起,一直到卸任香奈儿CEO. 作者出生于上世纪六七十年代的一个美国中西部的犹太家庭,崇尚自由,讨厌标签.高中的一个暑假 ...

  4. 激励CEO们最好的办法就是鼓励他们不要停止思考

    我们应该怎样在企业中释放出每一个人都可能内在的自我驱动力呢? 我创业十多年来,结识了很多创业家,他们中很多和我一样也试图通过学习实践找到有效管理的捷径,一个最简单的法则,最好还是比较容易的.事实上,最 ...

  5. 手机web站点和手机app 技术选型的困惑于思考

    今年一直在关注移动端技术的发展,自己也用博客园的rss接口玩了半年,关于技术选型的困惑和大家说说 一 趋势 随着手机硬件不断的升级,外加4g牌照的发放,不出2年时间移动端web站点和手机app一定会进 ...

  6. [转]关于event的两个常被忽略的api:isDefaultPrevented()和preventDefault()

    今天在robert penner(as3 singal的作者)的一篇blog文中顺藤摸瓜到了darron schall的另外一篇blog文(Creating Default, Cancelable E ...

  7. .net程序员工作两年总结

    (2015年9月) 最近换了工作,面试了很多家公司想总结下,以便以后回顾知道自己是怎么走过来的. 入行背景: 我是半路转行做软件开发的,2011年7月大学专科毕业,大学专业是:机械制造及其自动化:20 ...

  8. 【作业4.0】HansBug的第四次面向对象课程思考

    嘛..不知不觉这门课程要结束了,那么就再说点啥以示庆祝呗. 测试vs正确性论证 说到这个,相比很多人对此其实很有疑惑,请让我慢慢分析. 逻辑概览 首先我们来看看两种方式各自的做法和流程是什么样的: 单 ...

  9. Netty 源码阅读的思考------耗时业务到底该如何处理

    目录大纲: 前言 处理耗时业务的第一种方式-------handler 种加入线程池 处理耗时业务的第二种方式-------Context 中添加线程池 总结:两种方式的对比和思考 前言 熟悉 Net ...

随机推荐

  1. Windows卸载软件出现蓝屏SYSTEM SERVICE EXCEPTION(VrvProtect_x64_2.sys)

    今天给大家介绍一个卸载Windows上软件的工具Windows Installer Clean Up,可以卸载电脑上的很多控制面板里面卸载不掉的软件,或者卸载过程中出现问题的软件. (1)出现的现象: ...

  2. YUI Compressor压缩失效的场景-eval和with

    一.官方文档的说明 in the face of evil features such as eval or with, the YUI Compressor takes a defensive ap ...

  3. 办理西蒙弗雷泽大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University

    办理西蒙弗雷泽大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University Q.微信:171922772办理教育部国外学历学位认证海外大学毕业 ...

  4. 前端学习——ionic/AngularJs——获取验证码倒计时按钮

     按钮功能为:点击"获取验证码"--按钮不可用-设置倒计时-60秒后重新获取. 代码借鉴于:http://plnkr.co/edit/Swj82MpJSix3a47jZRHP?p= ...

  5. [HMLY]8.Cocoa

    cocoa是苹果公司为mac os x所创建的原声面向对象API,是mac os x上五大API之一,其他四个是carbon,posiX,x11,java. 苹果的面向对象开发框架,用来生成 Mac ...

  6. TreeView控制消息

    控制消息的作用 通过发送消息到Treeview控件, 就能够控机Treeview控件.常用的控制有: 获取被点击的节点 获取节点的文本 设置节点的文本 获取节点的父节点 获取节点的子节点 TVM_GE ...

  7. 创建TreeView控件

    第一种方式 hwndTreeView=CreateWindow("SysTreeView32", NULL,WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS ...

  8. LintCode ---- 刷题总结

    对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始).如果不存在,则返回 -1. 基本:两重for循 ...

  9. Linux sendmail 详解

    Internet上最基本的服务,现在应该大部分人都有自己的邮箱吧,用的人多,但理解的人估计没多少,我自己以前也是常常用,但对其原理并不操心.今天就来操心下,进行个小总结 一.邮件服务的基本流程     ...

  10. ManualResetEvent和AutoResetEvent的区别

    在讨论这个问题之前,我们先了解这样一种观点,线程之间的通信是通过发信号来进行沟通的.(这不是废话) 先来讨论ManualResetEvent,讨论过程中我会穿插一些AutoResetEvent的内容, ...