资源描述:
《JavaScript面试后的反思.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript面试后的反思(1)2012-07-0613:51nowamagicMXR1A我要评论(0)字号:T
2、T收藏Q为什么这么说,前些日子收到面试邀请,那就去试试呗,有几年没有面试过了吧。和面试官坐在沙发上,聊天式的他问我答,以下就是几个javascript方面的问题。AD:2013云计算架构师峰会耕彩课程曝光写此文目的是为了让更多的程序员理解javascript的一些概念,对,是理解,而不是了解。我们己经了解得够多了,该是向深入理解的方向靠拢的时候了。为什么这么说,前些日子收到面试邀请,那就去试试呗,有儿年没有面
3、试过了吧。和面试官坐在沙发上,聊天式的他问我答,以下就是几个javascript方面的问题:请创建一个对象,包括几个公有属性,接下來是为对象创建一个公有方法,然后为对象创建几个私有属性,一个私有方法。说实话,这几个问题我默名其妙,要是他让我用jquery写个拖动插件什么的,我估计我能写挺好,原生的javascript,晕,虽然我看过jquery源码解读,但这些基本概念要命。木文的例子输出使用如下方法,便于查看:1.functiondwn(s){document.write(s+"
");}function从一开始接触到
4、js就感觉好灵活,毎个人的写法都不一样,比如一个function就有N种写法,如:1.functionshowMsg(){}2.varshowMsg=function(){}3.showMsg=function(){}似乎没有什么区别,都是一样的嘛,真的是一样的吗,大家看看下面的例子:1.///2.//函数定义:命名函数(声明式),匿名函数(引用式)3.//声明式,定义代码先于函数执行代码被解析4・function11{){dwn(n11H;}5.tl();6・function1)7.{dwn(,fnewtln);}8.tl(
5、);//引用式,在函数运行中进行动态解析9・var11=function(){dwn("newnew1111);}10.tl();11.vart1=function()12・{dwn(nnewnewnew11n);}13.tl();//以上输出:new11znew11,newnew11,newnewnew11可能想着应该是输出11,new11,newnewt1,newnewnewtl,结果却并不是这样,应该理解这句话:声明式,定义代码先于函数执行代码被解析。如果深入一步,应该说是scope链问题,实际上前面两个方法等价于win
6、dow.11,以理解为tl是window的一个公有属性,被赋了两次值,以最后一次赋值为最终值。而后面两个方法,可以理解为是tl是个变最,第四个方法的v虹去掉之后的结呆仍然不会改变。然而,当第四个方法改成functiontl(){}这样的声明式时,结果变成了newnewnew11,newnewnewtl,newnewtl,newnewtl前面两个按照我的理解可以很好的理解为什么是这个答案,第三个也可以理解,但是最后一个输出让我比较纠结。另外匿名函数还有(functionO{...})()这样的写法,最后一个括号用于参数输入。还有
7、vartl二newfunctionO{..)这样的声明,实际上tl已经是一个对象了。1・vart2=newfunction(){2.vartemp=100;//私令成员1.this,temp=200;//公有成员,这两个概念会在第三点以后展开说明2.returntemp+this.temp;}5•alert(typeof(t2));//object6・alert(t2・constructor());//300除此之外,还有使用系统内置函数对象來构建一个函数,例:1.//这个位置加不加new结果都一样,WHY2・vart3=ne
8、wFunction(1vartemp=100;3.this.temp=200;4・returntemp+this3・alert(typeof(t3));//function5.alert代3());//300创建对象首先我们理解一下面向对象编程(Object-OrientedProgramming,OOP),使用OOP技术,常常要使用许多代码模块,毎个模块都提供特定的功能,毎个模块都是孤立的,哄至与其它模块完金独立。这种模块化编程方法提供了非常大的多样性,大大增加了代码的朿用机会。可以举例进一步说明这个问题,假定计算机上的一个
9、高性能应用程序是一辆一流赛车。如果使用传统的编程技巧,这辆赛车就是一个单元。如果要改进该车,就必须替换整个单元,把它送回厂商,让汽车专家升级它,或者购买一个新车。如果使用00P技术,就只需从厂商处购买新的引擎,自己按照说明替换它,而不必用钢锯切割车体。不过大部分的论点是.ja