如何在JSON文件中放置一个javascript函数?

时间:2015-09-24 16:03:46

标签: javascript json

我正在尝试让我的应用程序将一个json文件转换为一个对象,该对象中也包含函数,但我不知道如何执行此操作。这是我的json文件,不起作用:

{
  "draw": function() {
    ctx.clearRect(0,0,960,720);
    ctx.fillStyle = "#000000";
  },
  "load": function() {
    if (beginning = 0) { erasePrev };
    loadHTML('button','level1Button',"position:absolute; top:100px; left:200px;",'LEVEL I','loadLevel(1)',false,false);
    loadHTML('a','howtoplayhref',"position:absolute; top:100px; left:100px;",'how to play',false,false,'howtoplay.html');
  },
  "clear": function() {
    removeHTML(level1Button);
    removeHTML(howtoplayhref);
  }
} 

我知道如何加载和解析文件,问题是它不会传递json验证器。

2 个答案:

答案 0 :(得分:1)

JSON文件是无逻辑数据表示。您可以拥有包含属性,数组,整数,字符串和布尔值的对象。您不能在文件中存储任何逻辑,因为函数代表的不仅仅是函数内容(例如范围)。 JSON文件的整个想法是易于传输,易于解析和使用。

答案 1 :(得分:0)

你不能把功能放在JSON中。你可以做的是将一个包含函数定义的字符串放入JSON中,然后在该字符串上调用eval()将其转换为相应的函数。

{
    draw: "(function() {
        ctx.clearRect(0,0,960,720);
        ctx.fillStyle = '#000000';
    })"
}

加载JSON后,执行:

var obj = JSON.parse(json_data);
obj.draw = eval(obj.draw);

请注意,函数周围的括号很重要,否则eval不会将其正确解析为函数表达式。