毕业两年了,做前端也一年多了,一直以为我对javascript很清楚,可是最近受到了沉重的打击才知道原来什么都不会。失业了,突然知道学的杂原来没有什么好处,不如学的精。决定先攻克javascript,再转战actionscript。
本来想看一下javascript高级程序设计中文版,可是发现第二版的英文版已经出了,里面加入了很多RIA方面的东西,所以决定与时俱进,学习第二版。英文版看着就是不爽,记得都没有中文版清楚,所以从来没有写过读书笔记的我,终于决定克服懒惰恶习,要写读书笔记了,O(∩_∩)O~。希望一切顺利。
偶是从第四章开始看的,讲的是变量,作用域和存储器,javascript的核心语言是ECMAScript,在ECMAScript中,变量存放两种数据类型的值,原始值和引用值。书中也给出了一个和容易理解的图形,我就不客气的拿来用用了。吼吼....,不支持图像。还是自己动手了。
Stack(栈)存放简单数据类型 heap(堆)存放引用类型(对应栈中的地址(O))
数字(11) 对象
布尔值(true) 对象
null 对象
地址(O) 对象
字符串(string) 对象
书中是这样解释这个图形的:这个图形表明原始类型数据存储在栈中。栈中的每个变量占用一个单一位置并且连续的存储。当栈中存在一个存储地址的时候,它作为一个指针指示存放在堆中的一个对象。堆不是连续存储的,因为每个对象都需要不同大小的内存。
简单说就是占有固定内存的放栈中,占有不固定内存的放堆中。
接下来根据原始值和引用值的特点说了动态属性问题,只有引用值才可以有动态属性。看下面例子:
变量person被定义为一个对象,变量person在栈中有一个存储地址,new指针指向person存放在堆中的对象。这里我们可以动态的为对象添加属性,如name,age,job...
var person = new Object();
person.name = “Nicholas”;
alert(person.name); //”Nicholas”
而原始值当然不能存在动态的属性了。
先去解决温饱问题,待续......
Tag标签: javascript,学习笔记