欢迎来到天天文库
浏览记录
ID:18263731
大小:65.50 KB
页数:9页
时间:2018-09-16
《javascript面试后的反思》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript面试后的反思(1)2012-07-0613:54nowamagicMXRIA我要评论(0)字号:T
2、T为什么这么说,前些日子收到面试邀请,那就去试试呗,有几年没有面试过了吧。和面试官坐在沙发上,聊天式的他问我答,以下就是几个javascript方面的问题。AD:2013云计算架构师峰会精彩课程曝光写此文目的是为了让更多的程序员理解javascript的一些概念,对,是理解,而不是了解。我们已经了解得够多了,该是向深入理解的方向靠拢的时候了。为什么这么说,前些日子收到面试邀请,那就去试试呗,有几年没有面试过了吧。和面试官坐在沙发上,聊天式的他问我答,以
3、下就是几个javascript方面的问题:请创建一个对象,包括几个公有属性,接下来是为对象创建一个公有方法,然后为对象创建几个私有属性,一个私有方法。说实话,这几个问题我默名其妙,要是他让我用jquery写个拖动插件什么的,我估计我能写挺好,原生的javascript,晕,虽然我看过jquery源码解读,但这些基本概念要命。本文的例子输出使用如下方法,便于查看:1.functiondwn(s){document.write(s+"");}function从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法,如:1.func
4、tionshowMsg(){}2.varshowMsg=function(){}3.showMsg=function(){}似乎没有什么区别,都是一样的嘛,真的是一样的吗,大家看看下面的例子:1.///---------------------------------------------------2.//函数定义:命名函数(声明式),匿名函数(引用式)3.//声明式,定义代码先于函数执行代码被解析4.functiont1(){dwn("t1");}5.t1();6.functiont1()7.{dwn("newt1");}8.t1();//引用式,在函数运行中进行
5、动态解析9.vart1=function(){dwn("newnewt1");}yearsmortgagehousing;4.mortgageregistrationformalitiesarecompleted.(D)pledge1.borrower(includingthepledgor)between18-65yearsofage,withfullcivilcapacity;2.collateral1.t1();2.vart1=function()3.{dwn("newnewnewt1");}4.t1();//以上输出:newt1,newt1,newnewt1,n
6、ewnewnewt1可能想着应该是输出t1,newt1,newnewt1,newnewnewt1,结果却并不是这样,应该理解这句话:声明式,定义代码先于函数执行代码被解析。如果深入一步,应该说是scope链问题,实际上前面两个方法等价于window.t1,可以理解为t1是window的一个公有属性,被赋了两次值,以最后一次赋值为最终值。而后面两个方法,可以理解为是t1是个变量,第四个方法的var去掉之后的结果仍然不会改变。然而,当第四个方法改成functiont1(){}这样的声明式时,结果变成了newnewnewt1,newnewnewt1,newnewt1,newn
7、ewt1前面两个按照我的理解可以很好的理解为什么是这个答案,第三个也可以理解,但是最后一个输出让我比较纠结。另外匿名函数还有(function(){...})()这样的写法,最后一个括号用于参数输入。还有vart1=newfunction(){..}这样的声明,实际上t1已经是一个对象了。1.vart2=newfunction(){2.vartemp=100;//私有成员3.this.temp=200;//公有成员,这两个概念会在第三点以后展开说明4.returntemp+this.temp;}5.alert(typeof(t2));//object6.alert(t2
8、.constructor());//300除此之外,还有使用系统内置函数对象来构建一个函数,例:1.//这个位置加不加new结果都一样,WHY2.vart3=newFunction('vartemp=100;3.this.temp=200;4.returntemp+this.temp;');5.alert(typeof(t3));//function6.alert(t3());//300创建对象首先我们理解一下面向对象编程(Object-OrientedProgramming,OOP),使用OOP技术,常常要使用许多代码模块,每个模块都提
此文档下载收益归作者所有