【笔记】javascript权威指南

javascript中的原始类型和对象类型(基本类型和引用类型)
//本书是指:javascript权威指南 
 
//以下内容摘记时间为:2013.7.27
 
计算机程序运行时需要对值(value)(比如:3.14或者“hello”)进行操作。
能够表示并操作的值的类型称作数据类型(type)。
当程序需要将值保存起来以备将来使用,便将其赋值给一个变量(variable)。
 

Js的数据类型分为两类:

 
原始类型 和对象类型(基本类型和引用类型,来自高程的说法
 
原始类型包括:字符串,布尔值,数字。(null和undefined是两个特殊的原始值,代表了各自特殊类型的唯一成员)
 
对象是属性的集合(不是属性和方法的集合吗?),每个属性都由“名/值对”(值可以是原始值,也可以是对象)构成。全局对象是比较特殊的对象。
对象类型包括:普通对象(“命名值”的无序集合),特殊对象-数组(带编号值的有序集合),函数。
 
备注:在其他书中看到对象是属性和方法的集合。但是在这本书中p32说对象是属性的集合,属性可以是对象,对象包括函数,函数即方法,所以对象是属性和方法的集合。
在p46 页中说属性值用“.”来引用,当属性值是一个函数的时候,称其为方法通过o.m()来调用对象o中的方法。
 
全局对象(globle object)初始属性:
  • 全局属性:比如undefined,Infinity和NaN
  • 全局函数:比如isNaN(),parseInt(),eval()(eval()这个函数在用元素的js代码接收json数据的时候比较好用)
  • 构造函数:比如Date(),RegExp(),String(),Object()和Array()
  • 全局对象:比如Math和JSON
在代码对顶端,不在任何函数内的JS代码,可以使用JS关键字this来引用全局对象:
 
var global = this;//定义一个引用全局对象的全局变量。
 
到客户端JS中,window对象充当了全局对象,有一个引用自身的window属性,替代this来引用全局对象。
window对象定义了核心的全局属性,也定义了一些额外的全局属性。
 
包装对象:存取字符串,数字,布尔值的属性时创建(用String(),Number(),Boolean()构造函数来创建)的临时对象称作包装对象。
 
不可变的原始值和可变的对象引用
 
在将一个赋给变量时,解析器必须确定这个值是引用类型还是基本类型。
//
基本数据类型是按值访问的,因为可以操作保存在变量中的实际值。
引用类型的值是保存在内存中的对象。JS不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,为此,应用类型的值是按照引用访问的。
备注:当复制保存着对象的某个变量时,操作的是对象的引用,但是为对象添加属性时,操作的是实际的对象。
//(来自高程的说法
 
下面是定义和复制基本类型和引用类型的具体实现
 
基本类型变量初始化,复制。
var a = 5;
var b = a;
b = 10;
第一句中a保持的值是5,第二句使用a来初始化b,此时b的值也是5,但是a和b是完全独立的,b中的5只是a中的一个副本。所以当第三句中把10赋给b时,b的值是10,但是a的值依然是5.
下图展示了复制基本类型的过程: