"'长度'在对象(obj)"它在js中如何工作?

时间:2017-08-25 11:53:21

标签: javascript

'length' in Object(obj)

以上语句如何在JavaScript中运行?

我在angular.js lib

中找到了以下JavaScript语句
var length = 'length' in Object(obj) && obj.length;

3 个答案:

答案 0 :(得分:2)

Object(...)将原语转换为对象结构。例子:

Object(null) // {}
Object(undefined) // {}
Object(10) // Number {[[PrimitiveValue]]: 10}

如果键入'length' in 10,它将抛出错误,但'length' in Object(10)不会抛出错误(返回false并阻塞下一个语句,如果obj具有原始值,则会抛出错误)。

您的代码检查obj变量是否是数组或类似数组的对象(具有length属性)。

有关Objectin 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 }));