赣南脐橙

keybr

佰草伐

导航

# JavaScript中的对象

1. 对象的定义
JS中的所有事物都是对象,对象是指带有**属性**和**方法**的特殊数据类型。

JS自带很多内部对象:

`String` `Date` `Array` 等

对象的创建,属性及方法的使用方式

//例如:

var a; //创建空对象

var stu = {}; //创建没有自定义属性和方法的空对象

var obj = new Object(); //同上

var func = (function(){ //构造函数式创建
var v = 0;//私有属性
var b = function(){};//私有方法

return {

}
})();

var user = {
name:"小明",
age:"18",
run:function(){
}
};//创建一个有自义属性和方法的空对象
user.name //小明
user['name'] //小明
user['school'] = '清华'// 赋值
user.school = '清华'// 同上

user.run();//调用

user.prototype.stop = function(){}//添加新的方法
user.stop();//调用

2. 空对象的判断
如果只是判断对象为`null`或者`undefined`

var obj;
if(!obj){
console.log("对象为空");
}

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

JSON.stringify(obj)=='{}';//大部分情况下也都可以用
for...in能够遍历可枚举属性,包括prototype中的(继承来的)php知识网
Object.keys(ES2015)值遍历·自有的·可枚举属性

注意:不要用JSON.parse(str)=={}来判断,永远都是false,
因为对象的值是引用类型的,引用地址不同就不相等

但是对象的属性也可以通过设置`enumerable=false`为不可枚举的,那么通过上面的方法你就无法判断对象是否具有某个属性了
3. 对象的相等判定

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

{}=={}; //false 对象是引用类型的,所以引用地址不同就不同

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

4. 对象属性的顺序

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

posted on 2020-07-30 16:19  佰草伐  阅读(71)  评论(0编辑  收藏  举报

keybr

php基础知识

Wood Furniture