Javascript 传递给函数的js对象成为字符串

Javascript 传递给函数的js对象成为字符串,javascript,Javascript,`我编写了一个js函数来遍历javascript对象,并使用console.log()输出其内容。当遇到作为对象的属性时,它会递归地调用自身。问题是在递归循环中,传入属性不显示任何子属性 以下面的示例(也是在)为例,一旦将jsObject.payload传递到递归调用中,“payload”将恢复为简单的字符串对象 var EnumerateObject = function(object, path) { if (!path) path = ''; for (var prope

`我编写了一个js函数来遍历javascript对象,并使用console.log()输出其内容。当遇到作为对象的属性时,它会递归地调用自身。问题是在递归循环中,传入属性不显示任何子属性

以下面的示例(也是在)为例,一旦将jsObject.payload传递到递归调用中,“payload”将恢复为简单的字符串对象

var EnumerateObject = function(object, path) {
    if (!path) path = '';

    for (var property in object) {
        if (object.hasOwnProperty(property)) {
            if (typeof object[property] === "object") EnumerateObject(property, path + '.' + property);
            else console.log(path + '.' + property + '=' + typeof property);
        }
    }
}

var json = '{"success": true, "error": "", "payload": { "fetch": "1", "xml": "<xml />" }}';
var jsObject = $.parseJSON(json);

EnumerateObject(jsObject);
var EnumerateObject=函数(对象,路径){
如果(!path)path='';
for(对象中的var属性){
if(object.hasOwnProperty(property)){
if(type of object[property]==“object”)枚举对象(property,path+'.'.+属性);
else console.log(路径+'.'+属性+'='+属性类型);
}
}
}
var json='{“success”:true,“error”:“”“payload”:{“fetch”:“1”,“xml”:“}}”;
var jsObject=$.parseJSON(json);
枚举对象(jsObject);

我知道我在这里遗漏了一些微妙的东西,但我不确定为什么传入“object”参数的“property”突然变成了一个字符串?

属性是一个包含值“payload”的字符串


对象[属性]
{'fetch':'1','xml':..}
属性是包含值“payload”的字符串


对象[属性]
{'fetch':'1','xml':..}

对象键始终是字符串。因此,当您执行
typeof property
时,
property
是键,而不是值。您可能想执行对象[属性]类型的
typeof


因此,它们没有被转换为字符串,只是得到了错误对象的类型。

对象键始终是字符串。因此,当您执行
typeof property
时,
property
是键,而不是值。您可能想执行对象[属性]类型的
typeof

var EnumerateObject = function(object, path) {
    if (!path) path = '';

    for (var property in object) {
        if (object.hasOwnProperty(property)) {
            if (typeof object[property] === "object") EnumerateObject(property, path + '.' + property);
            else console.log(path + '.' + property + '=' + typeof property);
        }
    }
}

var json = '{"success": true, "error": "", "payload": { "fetch": "1", "xml": "<xml />" }}';
var jsObject = $.parseJSON(json);

EnumerateObject(jsObject);

因此,它们没有被转换为字符串,只是得到了错误对象的类型。

以下是固定的解决方案:

var EnumerateObject = function(object, path) {
    if (!path) path = '';

    for (var property in object) {
        if (object.hasOwnProperty(property)) {
            if (typeof object[property] === "object") EnumerateObject(property, path + '.' + property);
            else console.log(path + '.' + property + '=' + typeof property);
        }
    }
}

var json = '{"success": true, "error": "", "payload": { "fetch": "1", "xml": "<xml />" }}';
var jsObject = $.parseJSON(json);

EnumerateObject(jsObject);
var EnumerateObject = function(jsonObject, path) {
    if (!path) path = '';

    for (var prop in jsonObject) {
        if (jsonObject.hasOwnProperty(prop )) {

            if (typeof(jsonObject[prop ]) === "object") EnumerateObject(jsonObject[prop ], path + '.' + prop );
            else console.log(path + '.' + prop + '=' + typeof prop );
        }
    }
}

var json = '{"success": true, "error": "", "payload": { "fetch": "1", "xml": "<xml />" }}';
var jsObject = $.parseJSON(json);

console.log(typeof(jsObject["payload"]));
EnumerateObject(jsObject);
var EnumerateObject=函数(jsonObject,path){
如果(!path)path='';
for(jsonObject中的var prop){
if(jsonObject.hasOwnProperty(prop)){
if(typeof(jsonObject[prop])==“object”)枚举对象(jsonObject[prop],path+'.+prop);
else console.log(路径+'.'+prop+'='+typeof prop);
}
}
}
var json='{“success”:true,“error”:“”“payload”:{“fetch”:“1”,“xml”:“}}”;
var jsObject=$.parseJSON(json);
log(typeof(jsObject[“payload”]);
枚举对象(jsObject);

请删除保留关键字的使用,如object。。IE可能会出问题。

以下是固定的解决方案:

var EnumerateObject = function(jsonObject, path) {
    if (!path) path = '';

    for (var prop in jsonObject) {
        if (jsonObject.hasOwnProperty(prop )) {

            if (typeof(jsonObject[prop ]) === "object") EnumerateObject(jsonObject[prop ], path + '.' + prop );
            else console.log(path + '.' + prop + '=' + typeof prop );
        }
    }
}

var json = '{"success": true, "error": "", "payload": { "fetch": "1", "xml": "<xml />" }}';
var jsObject = $.parseJSON(json);

console.log(typeof(jsObject["payload"]));
EnumerateObject(jsObject);
var EnumerateObject=函数(jsonObject,path){
如果(!path)path='';
for(jsonObject中的var prop){
if(jsonObject.hasOwnProperty(prop)){
if(typeof(jsonObject[prop])==“object”)枚举对象(jsonObject[prop],path+'.+prop);
else console.log(路径+'.'+prop+'='+typeof prop);
}
}
}
var json='{“success”:true,“error”:“”“payload”:{“fetch”:“1”,“xml”:“}}”;
var jsObject=$.parseJSON(json);
log(typeof(jsObject[“payload”]);
枚举对象(jsObject);
请删除保留关键字的使用,如object。。我可能会吐出来