javascript - 如何导入里面有函数的JSON对象?

标签 javascript json js.class

你好,

我现在正在玩 JS.Class,我正在制作一个基于文本的游戏。目前,它是在浏览器中执行的,但最终, 它将在管理套接字的 Node.js 环境中执行,并为使用类似 telnet 的客户端的玩家提供 ANSI 颜色支持。

我创建了几个类,其中一个定义了 Angular 色(可以是真实玩家或游戏中的 Angular 色)。

对于真正的玩家,创建新玩家的代码如下所示:new Character( "userId", {/* player's options/settings/parameters here*/}, socket );

例子:

new Character( "000001", {
    "Name" : "Cybrix",
    "Zone" : "000001-000003",
    "Stealth" : false,
    "Fighting" : false,
    "Blind" : false,
    "Sleeping" : false
}, socket );

通常情况下,游戏中的 Angular 色应该有不同的和独特的方法,我用这些方法来模拟类似事件的行为。

例子:

new Character( "000001", {
    "Name" : "Large Dragon Boss",
    "Zone" : "000001-000003",
    "Stealth" : false,
    "Fighting" : false,
    "Blind" : false,
    "Sleeping" : true,
    "onArrive" : function( target ) {
        /* do something unique to this character. Eg: attack target */
    }
}, undefined );

问题:

我想找到一种有效的方法来按需加载所有“独特”的游戏 Angular 色(这通常发生在加载新区域时)。 这将支持功能。我真的考虑过使用 AJAX,但那将是无效的 JSON 格式。

关于如何实现这一点的任何提示,或者我应该在我的“游戏”设计中更改什么来实现这一点?

我当然需要一个既能在我的浏览器 中运行又能很好地移植到 Node.js 的解决方案。

谢谢!

(PS:对于我的非常具体的问题,可能对其他人没有帮助,我深表歉意) (PS 2:不知道Title中用什么问题)

最佳答案

这些字符是否可以拆分为字符类型。您可以让您的字符类型继承自 Character,并且每个字符类型都实现自己的 onArrive 方法。像这样的东西:

function Dude(){};
Dude.prototype = new Character         // inherit from character
Dude.prototoype.onArrive = function(){
  // do some stuff
}

等等。

您不能在从服务器返回的 JSON 中定义函数,您也不想这样做。那将是紧密耦合的。只需定义继承和创建具有适当“特征”(或行为)的字符类型的对象原型(prototype)

额外的

我对您要找的东西有点困惑,但让我再试一次。如果你有一些数据在几个服务器之间交换,(字符数据)你希望能够实例化某种类型的对象。假设此数据知道其类型(即将其作为属性添加到字符 JSON),那么您可以实例化任何类型的对象。使用上述原型(prototype)声明,您可以创建任意多种类型的 Character。然后您可以通过一些工厂方法实例化此类型。例如

var Factory = {
  new: function(attrs){
    return new classes[attrs.type](attrs);
  }
};

var classes = {
  dude: Dude,
  another: Another,
  blah: Lah,
};

假设您已经将 Dude、Another、Lah 定义为 Character 的其他原型(prototype),并且它们各自实现了一些 onAdd 方法(或者只使用 中定义的默认值>Character. 然后你就可以像这样使用它了:

character = Factory.new({
  type: 'dude',
  "Name" : "Cybrix",
  "Zone" : "000001-000003",
  "Stealth" : false,
  "Fighting" : false,
  "Blind" : false,
  "Sleeping" : false
});

character.onAdd();  

关于javascript - 如何导入里面有函数的JSON对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538948/

相关文章:

javascript - 如何检查返回值是否为 JS.Hash?

javascript - 从同一对象中创建的 jQuery 单击事件访问属性和对象

javascript - jQuery AJAX 请求返回与预期不同的 JSON

javascript - 如何构建JS.Class

javascript - Jquery post success变量范围

java - 在文件中添加新元素

javascript - 如何使用 jquery 从其他文件添加类?

javascript - 有没有办法在javascript中做到这一点?

javascript - 仅显示当前鼠标悬停 div :jQuery 的子级

javascript - 连接到 mlab 失败