摘要: 如果JavaScript仅是运行时自上往下逐句解析的,下面的代码能正确运行是可以理解的,因为我们先定义函数,然后才调用它。结果是This is message,这个没问题先不说什么是预解析,我们看一个例子:这个函数执行时会弹出什么呢?思考一下,结果是‍undefined;因为在解释到 var num= 1; 这句之前就打印了num的值,此时尚未给num赋值。为什么不输出“未定义”呢,通俗点说就是因为在一个javascript块加载未执行时,程序会先看一遍有什么东东,并把它放在一个地方!下面就说函数预解析:1、javascript在执行前会进行类似“预解析”的操作:首先会创建一个在当前执行环境下 阅读全文
posted @ 2014-01-25 22:28 lcoing 阅读(327) 评论(0) 推荐(0)
摘要: 一次又一次的,我发现,那些有bug的Javascript代码是 由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性, 当我们选择面对它的时候,这将成为我们前进的阻碍. 作为初学者,我们来测试五种函数调用的方法,从表面来看我们会认为那些函数与C#中函数 的作用非常相似,但是我们一会儿可以看到还是有非常重要的不同的地方的,忽视这些差异无疑会导致难于跟踪的bug。首先让我们创建一个简单的函数,这个函 数将在将在下文中使用,这个函数仅仅返回当前的this的值和两个提供的参数.?12345最常用的方法,但不幸的,全. 阅读全文
posted @ 2014-01-24 21:39 lcoing 阅读(344) 评论(0) 推荐(0)
摘要: 原型的含义是指:如果构造器有个原型对象A,则由该构造器创建的实例(Object Instance)都必然复制于A。““在JavaScript中,对象实例(Object Instance)并没有原型,而构造器(Constructor)有原型,属性’.prototype’指向原型。对象只有“构 造自某个原型”的问题,并不存在“持有(或拥有)某个原型”的问题。””如何理解这一句话?代码1:01functionmyFunc() {02varname ="stephenchan";03varage = 23;04functioncode() {05alert("Hello 阅读全文
posted @ 2014-01-24 21:31 lcoing 阅读(388) 评论(0) 推荐(0)
摘要: 首先要明白的是:Js是使用是原型继承来实现对象系统的。那什么是这个原型呢?在Js中,其实原型也是一个对象实例,这点很关键,也就是说原型本身就具有了很多可读取的属性和可调用的方法,而不像一些基于类继承来实现的对象系统的语言(比如:Java)中的类,类不必持有这些,只要描叙一个蓝图就行。但就Javascript的语言和对象系统的实现来讲,对象实例并没有原型,而只有构造器才有原型。那原型继承的实质是什么呢?其实就是复制,对,就是形成的新对象实例从原型复制出对应的信息。不过谈到复制,很多大侠自然就会联想到它的性能问题,那我要说的是,目前Js引擎基本都是采用了读遍历。我们看上面的图片,这是在形成对象时, 阅读全文
posted @ 2014-01-24 21:27 lcoing 阅读(177) 评论(0) 推荐(0)