Javascript原型返回值是未定义的,即使它在原型方法中是正确的

时间:2014-07-11 18:43:12

标签: javascript xml json node.js

我试图创建一个将xml转换为json的简单方法。我尝试使用javascript原型来尝试,因为我试图学习如何使用原型,因为我希望能够做一些像myXmlString.toJson();

这样的事情

我在下面的脚本中演示了xml字符串在方法中很好地转换为json对象,但是当我尝试调用该方法时,它是未定义的。

var parseString = require('xml2js').parseString;  // Used to parse the returned xml (ick) to json (yum)

String.prototype.toJson = function() {
  parseString(this, {explicitArray: false}, function (err, jsonResult) {

    if(err) {
      console.log('err');
      console.log(err);
      return err;
    }

    console.log('inside toJSON');
    console.log(jsonResult); // <-- Prints a json object as expected

    return jsonResult;
  });
}

var mystring = '<parent><child>3</child></parent>';
console.log(mystring); // Prints an xml string

mystring.toJson(); // Should this convert the variable mystring to a json structure?
console.log(mystring); // Prints the xml string
console.log(mystring.toJson()); // Prints undefined. Why?

1 个答案:

答案 0 :(得分:1)

在你的toJson方法中,你应该返回值parseString返回。目前,您只需执行parseString而不返回它返回的值。