This page有例子:
for (var name in buz) {
if (buz.hasOwnProperty(name)) {}
}
防止在原型中看到事物。这个hack使得“for in”语句在JavaScript中几乎无用。目前的建议是不要使用“for in”。
问:是否可以编写自定义“for in”函数,该函数自动包含if(buz.hasOwnProperty(name)){}条件?
我想的是:
window.whatFor = function(variable,object) {
for (var variable in object) [
if (object.hasOwnProperty(variable) {
do something here
}
}
}
用法:
whatFor(name,buz) {
do something here
}
答案 0 :(得分:5)
我认为这就是你想要的
window.whatFor = function(obj,funct) {
for (var v in obj) {
if (obj.hasOwnProperty(v)) {
funct(v);
}
}
}
然后
whatFor(sam, function (x) { alert(x); } );
Fiddle it up - 因为,为什么不呢?
答案 1 :(得分:1)
我真的不明白为什么要将whatFor
附加到window
对象。这样做会使您的代码浏览器具体化。您甚至无法在网络工作者中使用它。
这就是我要做的事情:
var global = typeof global !== "undefined" ? global :
typeof self !== "undefined" ? self : this;
global.whatFor = whatFor;
function whatFor(object, callback) {
var hasOwn = {}.hasOwnProperty.bind(object);
for (var property in object)
if (hasOwn(property))
callback(property);
}
您可能已经注意到,我没有打电话给object.hasOwnProperty(property)
,而是拨打hasOwn(property)
。这是因为hasOwnProperty
方法可能不存在于对象的原型链中。