目录
对象的分类
内建对象
由ES标准中定义的对象,在任何ES的实现中都可以使用,如Math String Number Boolean Function Object
宿主对象
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
如 BOM DOM console document
自定义对象
由开发人员自己创建的对象
创建对象
var obj = new Object();
var obj={};
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
向对象中添加属性,向对象中保存的值称为属性
对象.属性名=属性值
obj.name=”aaa“
读取 console.log(obj.name)
修改 obj.name="bbb"
删除 delete obj.name
属性名和属性值
属性名
不强制要求符合标识符的规范,但是尽量按照标识符的规范
如果要使用特殊的属性名,不能用.的方式来操作
语法:对象["属性名"]=属性值
obj["123"]=456
console.log(obj["123"]);
使用[ ]的形式操作属性更加灵活,在[ ]中可以直接传递一个变量,这样变量值是多少就会读取哪个属性
obj["123"]=789
var n="123"
console.log(obj[n])
属性值
可以是任意的数据类型
in 运算符
通过该运算符可以检查一个对象中是否含有指定的属性
如果有 true 没有false
"属性名" in 对象
"name" in obj
枚举对象中的属性
用for ... in 语句,对象中有几个属性,循环体就会执行几次,每次执行,会将对象中的一个属性的名字赋值给变量
for(var n in obj){
console.log(n);
}
也可以输出对应的属性值,但不能用obj.n来获取 得用obj[n],因为obj中没有n这个属性名
for(var n in obj){
console.log(obj[n])
}
基本数据类型和引用数据类型
基本数据类型:Number String Boolean Null Undefined
值直接在栈内存中存取,值和值之间独立存在,修改一个变量不会影响其他的变量
var a=123
var b=a
a++
b的值还是123
引用数据类型:Object
对象是保存到堆内存中的,变量保存的是内存地址,
每创建一个新的对象,就会在堆内存中创建一个新的空间
如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响
var obj=new Object()
obj.name='swk’
var obj2=obj
obj.name=‘zbj’
obj2的name也是zbj,因为内存地址相同
如果obj2=null
obj不受影响
obj3和obj4的地址不相同 所以不相等
当比较两个基本数据类型的值时,就是比较值
比较两个引用数据类型的值,它是比较的对象的内存地址,如果两个对象是一模一样的,但是地址不同,它也会返回false
对象字面量
var obj={};
var obj={属性名:属性值,属性名:属性值,....}
属性名可以加引号也可以不加,一般不加