有两种方法可以去除这些属性:
①. 检查并丢弃值为函数的属性。
②. 使用 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数学运算用法总结》