最近在读《JavaScript Enlightenment》(JavaScript启示录)
使用delete删除一个属性
1 | let a = { |
delete是将对象属性删除的唯一的方法,将对象属性设为undefined或null只会改变属性的值,并不会删除。
使用in操作符检查一个对象是否包含给定属性
根据原型链的概念,即使一个空对象,其内部属性也继承了Object.prototype的属性。Object.prototype是原型链的最顶级。
1 | let test0 = {name:'tom'}; |
使用hasOwnProperty()检查对象属性是否来自原型链
1 | let test1 = {name:'jack'} |
使用for-in和hasOwnProperty()循环枚举对象的属性
1 | let test2 = { |
for-in循环有一个缺点,他不仅会遍历特定对象的本地属性,还会遍历其继承的对象上的属性
循环访问的属性并不是其被定义的顺序