javascript 语法基础系列之Object


javascript语法基础系列之Object

对象的定义

JS中的所有事物都是对象,对象是属性和方法的集合,而类又是对象的抽象集合
JS 自带很多内部对象:
String Date Array
对象的创建,属性及方法的使用方法

1
2
3
4
// 声明式创建
var o = {};
// 构造函数创建
var o = new Object();

空对象的判断

如果只是判断对象未 nullundefined

1
2
3
4
var obj; 
if (!obj){
console.log('对象为空');
}

如果是判断对象没有任何可枚举属性

1
2
3
4
var obj;
JSON.stringify(obj) == '{}';
// 大部分情况 可用 for...in 遍历看枚举属性,包括prototype 中的(继承来的)
Oject.keys(obj) 只遍历自有的可枚举属性

注意:不要用 JSON.parse(str) == {}; 因为对象的值是引用类型的,引用地址不同就不相等
但是对象的属性也可以通过设置enumerable = false 为不可枚举的,那么通过上面的方法就没法判断对象是否具有某个属性了

对象的相等判定

一般比较对象的相等都是比较不为空的两个对象的相等

1
{} == {}; // false 对象是引用类型的 引用地址不同就不相等

所以,一般我们比较两个对象是否相等是都是比较它们是否具有相同的属性和方法,以及它们对应的值是否相等,而不是通过 ‘==’ 来比较

对象属性的顺序

顺序和你的添加顺序无关,ES6 Map()支持有序的对象,不同的浏览器排序的规则也不相同,因此想跨浏览器最好使用数组