原始类型和引用类型
Javascript基本数据类型:原始类型和引用类型
原始类型保存为简单数据值,引用对象则保存为对象
Javascript使用一个变量对象追踪变量的生存期,原始值被直接保存在变量对象内,而引用值则作为一个指针保存在变量对象内,该指针指向实际对象在内存中的存储位置
原始类型
Boolean
Number
String
Null
Undefined
鉴别原始类型用typeof操作符 特殊:typeof(null)----object
判断一个值是否为空类型的最佳方法是直接和null做比较
Console.log(value===null) //true or false
Javascript内建的引用类型
Array 数组类型
Date 日期和时间类型
Error 运行期错误类型
Function 函数类型
Object 通用对象类型
RegExp 正则表达式类型
内建对象实例化
Var items = new Array();
Var now = new Date();
Var error = new Error(“Something had happened”);
Var func = new Function(“console.log(‘hi’)”);
var object = new Object();
Var re = new RegExp(“\\d+”);
字面形式(允许你在不需要使用new操作符和构造函数显式创建对象的情况下生成引用值)要用字面形式创建对象,可以在大括号内定义一个新对象及其属性。
①对象和数组字面形式
var book = {
name: “Information of Management”,
year: 2014
}
属性名字也可以用字符串表示,特别是当你希望名字中包含空格或其他特殊字符时
var book = {
“name”: “Information of Management”,
“year”: 2014
}
var book = new Object();
book.name = “Information of Management”;
book.year = 2014
上述3例的结果是一致的
var colors = [‘red’,’blue’,’green’]
这段代码等价于
var colors = new Array(‘red’,’blue’,’green’)
②函数字面形式
基本上都要用字面形式来定义函数,使用字面形式创建函数既方便也不容易出错
function reflect(value){
Return value;
}
这段代码等同于
var reflect = new Function(“value”,”return value;”)
通常人们不会使用函数的构造函数
③正则表达式字面形式
模式被包含在两个”/”之间,第二个”/”后是单字符表示额外选项,例如:
var numbers = / \d+/g;
等同于
var numbers = new RegExp(“\\d+”,”g”)
如果使用RegExp构造函数,传入模式的参数是一个字符串,需要对任何反斜杠进行定义
访问属性
属性是对象中保存的名字和值得配对。点号是Javascript中访问属性的最通用做法,也可以用中括号访问Javascript对象的属性
Var array = [];
Array.push(12345);
也可以如下例中用中括号,方法的名字有中括号中的字符串表示
Var array = [];
Array[“push”](12345);
在需要动态决定访问哪个属性时,这个语法特别有用
Var array = [];
Var method = “push”;
Array[method](12345);
鉴别引用类型
Instanceof操作符以一个对象和一个构造函数为参数,如果对象是构造函数所指定的类型的一个实例,instanceof返回true,否则返回false
Instanceof操作符可鉴别继承类型,所有对象都是Object的实例
鉴别数组
虽然instanceof可以鉴别数组,但是有一个例外会影响网页开发者:Javascript的值可以在同一个网页的不同框架之间传来传去,当你试图鉴别一个引用值得类型时,有可能出现问题。
Array.isArray()是鉴别数组的最佳方法。
原始封装类型
原始封装类型有3种String Boolean和Number
当读取字符串、数字或布尔值时,原始封装类型将被自动创建
Var name = “Nicholas”;
Var firstChar = name.charAt(0);;
Console.log(firstChar);
这是在背后发生的事情
Var name = “Nicholas”;
Var temp = new String(name);
//Javascript创建了一个字符串实体让charAt(0)可以工作,字符串对象的 存在仅用于该语句,并在随后被销毁
Var firstChar = temp.charAt(0);
Temp=null;
Console.log(firstChar);