如何测试对象"isEmpty()"如果对象.原型被修改
How to test whether object "isEmpty()" if Object.prototype was modified?
我想测试一个对象是否为空:{}
。下面是典型的用法:
function isEmpty(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop))
return false;
}
return true;
}
但假设Object
原型按如下方式添加:
Object.prototype.Foo = "bar";
测试:
alert(isEmpty({})); // true
Object.prototype.Foo = "bar";
alert({}.Foo); // "bar" oh no...
alert(isEmpty({})); // true ...**huh?!**
我试图破坏对象的原型,改变它的构造函数,以及所有类似的hack。没有效果,但也许我做错了(可能)。
删除obj.hasOwnProperty
过滤器:
function isEmpty(obj) {
for (var prop in obj) {
return false;
}
return true;
}
<标题> 演示这样,它还会告诉你是否包含任何属性,或者是否有东西在原型链中,如果这是你想要的。
或者您可以更改
if (obj.hasOwnProperty(prop))
if (!obj.hasOwnProperty(prop))
如果你只是想知道是否有东西扰乱了它的原型
标题>相关文章:
- "“;变量未引用正确的对象
- 如何创建js常量对象与"依赖/相对;价值观
- "属性描述必须是对象“”;错误
- 获取"下一个“;对象中的数值
- 得到"TypeError:对象不是函数“”;在forEach循环中使用超级测试/超级代理时
- "键“;jQuery中的对象无法正常工作
- 为什么下面抛出一个“;对象没有't支持属性或方法'importNode'"在IE11中
- "未捕获[对象对象]”;投掷和接球时
- "对象不是函数“;当将Node.js HTTP服务器对象传递给Socket.IO时
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- 得到"未捕获的类型错误:未定义的不是函数“;当试图从对象调用get()或set()时
- 获得错误“;对象没有方法'jScrollPane'"与AngularJS一起使用时
- "类型错误:'null'不是对象(正在评估“a.nodeType')”;在phanto
- "这个“;对象函数内部的引用
- "对象没有't支持这种性质或方法“;在IE 8中.在调试中执行精细
- "Function.createDelegate"原因;错误:对象没有't支持属性或方法
- 在javascript中,使用requireJS,我如何"要求“;typescript对象
- a href="上的javascript对象对象;javascript:"呼叫
- TypeError:undefined不是一个对象(正在评估'msg.innerHTML="Uploa
- 获取对象"值“;在数组中