Javascript学习笔记--对象

此文为学习中查漏补缺,方便遗忘时查阅

对象规范写法,最后一个一个键值对末尾不应该加逗号,低版本浏览器会报错

var xiaoming = {
    name: '小明',
    birth: 1990,
    school: 'No.1 Middle School',
    height: 1.70,
    weight: 65,
    'aa-bb': 1223,
    score: null
};
//1.取值
xiaoming.name; // '小明'
xiaoming.birth; // 1990
//如果键(属性名),不是有效的变量名,如’aa-bb‘,必须用''括起来,而且取值的时候不能用xiaoming.aa-bb,正确写法如下
xiaoming['aa-bb'];
//访问不存在属性,返回undefined
xiaoming.abc;//undefined

//2.新增、删除属性
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性

//3.检测是否拥有某种属性(in)
//注意这种方法的漏洞,这个属性可能是继承得到的,比如toString,
//因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。
'name' in xiaoming; // true
'grade' in xiaoming; // false
'toString' in xiaoming; // true

//4.判断对象自身拥有的属性(hasOwnProperty)
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false

补充1:
判断对象是否为空的几种方法

//1.将object转化为json字符串,判断字符串是否为“{}”
let obj = {}
let str = JSON.stringify(obj);
alert(str == "{}") //true

//2.for in 循环
let obj = {}
let f = function(){
  for(let item in obj){
    return false
  }
  return true
}
alert(f)//true

//3.jquery的isEmptyObject方法
//原理也是for in 
let obj = {}
let b = $.isEmptyObject(obj)
alert(b)//true

//4.Object.getOwnPropertyNames
//获取对象中的键(属性名),返回为数组,判断数组的长度来确定对象是否为空
let obj = {}
let arr = Object.getOwnPropertyNames(obj)
alert(arr.length == 0)//true

//5.ES6的Object.keys
//和4类似,获取对象属性名
let obj = {}
let arr = Object.keys(obj)
alert(arr.length == 0)//true

之后会继续补充
廖雪峰https://www.liaoxuefeng.com/wiki/1022910821149312/1023020997017056

发布了12 篇原创文章 · 获赞 3 · 访问量 179

猜你喜欢

转载自blog.csdn.net/weixin_46592036/article/details/104964010