对象的分类
1. 内建对象
由ES标准中定义的对象,在任何ES的实现中都可以使用
eg:Math String Number Boolean Function Object 。。。
2. 宿主对象
由JS的运行环境提供的对象,目前来说主要指由浏览器提供的对象
eg:BOM DOM
3. 自定义对象
自己创建的对象
对象的操作
1. 创建
- 简单创建
var obj=new Object();
- 一部到位
var obj={
name:"名字",
age:"芳龄12",
gender:"无",
son:{
say:"hello world",
}
};
对象是可以嵌套的。
2. 属性的添加
obj.newProperty="我是新来的";
3. 属性的删除
delete obj.name;
属性名不强制要求遵循标识符规范,乱七八糟都可以
eg:obj.var="hello";
但是如果使用特殊的属性名,不能采用 obj.property 方法,需要使用另一种方式。
- 语法:
obj["property"]=value;
需要注意的是,读取任然需要采用此种方式。
读取:console.log(obj["property"]);
检查对象中是否含有指定属性
-
in运算符
通过该运算符检查一个对象中是否含有指定的属性值
语法:"property" in obj;
console.log(“name” in obj);
输出:true -
通过 in 运算符搭配 for 循环遍历对象
for (var n in obj){
console.log(“属性名:”+n);
console.log(“属性值:”+obj[n]);
}
输出:
对象的地址和引用
- 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中
开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用)
如果两个变量保存的是同一个对象的引用,一个对象的值得改变会影响
另一个对象
var a=new Object();
a.name="hello"; //a 中name
var b= a;
console.log(b.name); //改变b中那么
b.name="world";
console.log(a.name); //a中name随之改变
- 执行
b=null;
后,b的地址为空,将不再控制0x123地址的内容