js语言的一大特色就是“软”变量,js变量松散决定了其实var只是声明了变量,只是在内存中给变量开辟了空间而已,这个特点从某种角度来看是很是有趣而强大的可是又特别容易产生问题
咱们以前在讲变量的时候提到了基本类型和引用类型,此次咱们回去深入的讨论一下二者之间有什么区别,基本类型是指的简单的数据段,而引用类型则是多个数据段组成的对象;基本类型是“栈”,先进如栈内的变量最早被释放掉(内存中)。引用类型是“堆”,全部的引用类型内存中须要单独给开辟一个内存空间去存储。“栈”只是“堆”中数据的索引而已,js不容许直接访问内存中的位置,也就是说不能直接操做内存空间this
画了一个很丑的图,你们凑合着看
定义基本类型和引用类型的方式是类似的,建立一个变量而且为该变量赋值,当这个值保存到变量中去的时候,对不一样类型的变量的操做是彻底不同的,对于引用类型咱们能够为他添加熟悉和方法,也能够删除属性和方法
上面是一个简单的引用类型
我给引用类型加了一个属性叫“name”,这个属性使用key=value的形式写出来的。key值是“name”,value是“jerry”
我又给引用类型添加了一个方法,方法名字叫“sayName”,方法的用处是alert出来本身的名字,这个this.name前面的this指向的是方法的环境自己,若是这里比较抽象没有关系咱们接下来会用很大的篇章去讲解this的用法
我调用了这个引用变量中的方法
注意若是这个对象不被手动的销毁或者关闭当前页面,变量中的属性一直存在着,这个特性只有引用变量存在,普通变量保存不下来任何的属性
咱们创造了一个普通变量
尝试给创造出来的obj赋值一个“a”属性,可是当咱们赋值完了以后二次查看a属性的时候发现a属性并无被保留下来(undefined) 这几章的概念性的东西比较多,我尽可能分红5到6章去讲完,细致的给你们过一遍