'length' in Object(obj)
以上语句如何在JavaScript中运行?
我在angular.js lib
中找到了以下JavaScript语句var length = 'length' in Object(obj) && obj.length;
答案 0 :(得分:2)
Object(...)
将原语转换为对象结构。例子:
Object(null) // {}
Object(undefined) // {}
Object(10) // Number {[[PrimitiveValue]]: 10}
如果键入'length' in 10
,它将抛出错误,但'length' in Object(10)
不会抛出错误(返回false并阻塞下一个语句,如果obj
具有原始值,则会抛出错误)。
您的代码检查obj
变量是否是数组或类似数组的对象(具有length属性)。
有关Object和in operator的更多信息。
答案 1 :(得分:2)
这将检查length
中是否存在Object(obj)
属性
我想这是区分Array和Object。
因为Object没有属性length
所以对象将为false。
var a = {
name: "abc",
age: "34"
};
var l = 'length' in Object(a) && a.length;
console.log(l);

但是数组具有属性length
,它将返回数组的长度。
var b = [34, 54, 65];
var ll = 'length' in Object(b) && b.length;
console.log(ll);

当我们输入检查时,两者都是相同的。
var a = [];
var b = {};
console.log(typeof a, typeof b);

还有其他方法可以区分Array和Object。
使用Array.isArray
var a = [];
var b = {};
console.log(Array.isArray(a));
console.log(Array.isArray(b));

答案 2 :(得分:0)
var length = Object.keys(myArray).length;
或
通用功能: -
var objSize = function(obj) {
var count = 0;
if (typeof obj == "object") {
if (Object.keys) {
count = Object.keys(obj).length;
} else if (window._) {
count = _.keys(obj).length;
} else if (window.$) {
count = $.map(obj, function() { return 1; }).length;
} else {
for (var key in obj) if (obj.hasOwnProperty(key)) count++;
}
}
return count;
};
document.write(objSize({ a: 1, b: 2, c: 3 }));