JavaScript对象的特性与实践应用深入详解(2)

有两种方法可以去除这些属性:
①. 检查并丢弃值为函数的属性。
②. 使用 hasOwnProperty 方法,如果对象拥有独有的属性,它就会返回 true:

console.log(flight.hasOwnProperty("number"));//true console.log(flight.hasOwnProperty("constructor"));//false

7 枚举

for in 语句会遍历一个对象中的所有属性名,所以要过滤掉那些你不想要的属性:

var name; for (name in another_stooge) { if (typeof another_stooge[name] !== 'function') {//过滤掉函数 document.writeln(name + ': ' + another_stooge[name] + "; "); } }

属性名出现的顺序是不确定的。如果要让属性以特定的顺序出现,就要创建一个包含特定属性名的数组:

var i; var properties = [ "first-name", "middle-name", "last-name", 'profession' ];//定义想要的属性以及属性顺序 for (i = 0; i < properties.length; i += 1) { document.writeln(properties[i] + ": " + another_stooge[properties[i]] + "; "); }

8 删除

delete 运算符会删除对象的属性,但它不会涉及原型链中的任何对象。

删除对象的属性可能会让来自原型链的属性呈现出来:

another_stooge.nickname = "Jack"; console.log(another_stooge.nickname);//Jack delete another_stooge.nickname; console.log(another_stooge.nickname);//Lucy

9 减少全局变量的污染

全局变量削弱了程序的灵活性,所以要避免使用。

只创建一个唯一的全局变量:

var MYAPP = {};

这个变量就变成我们应用的容器:

MYAPP.stooge = { "first-name": "deniro", "last-name": "Li" }; MYAPP.flight = { airline: "Oceanic", number: 815, departure: { IATA: "SYD", time: "2017-08-02 19:00", city: "Sydney" }, arrival: { IATA: "LAX", time: "2017-08-03 21:37", city: "Los Angeles" } };

要把全局性的资源都纳入一个命名空间下,这样我们的程序与其他类库发生冲突的可能性会显著降低,而且程序也变得更易阅读。

感兴趣的朋友还可以使用本站在线HTML/CSS/JavaScript代码运行工具测试上述代码运行结果。

更多关于JavaScript相关内容还可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/444931e076a5a17efa80feb5f978beaf.html