javascript - 如何为 JSON 对象设置原型(prototype)?

标签 javascript oop json casting

我正在从服务器接收一些 JSON 对象,我想将其“类型转换”或“祝福”到一个具有已定义方法的对象。有什么方法可以为普通 JSON 对象设置原型(prototype)吗?

function MyClass(someValue) {
    this.myProperty = someValue;
}

MyClass.prototype.someMethod = function() { return "Here's " + this.myProperty + "!"};

var json = {myProperty : 'someValue'};

// ??? json.prototype = MyClass doesn't work, of course.

var result = json.someMethod();

我该怎么做?

最佳答案

好吧,我可以建议试试这些:

  • 通过向所有 Javascript 对象添加所需的函数(不好的做法)

    Object.prototype.lol = function() { alert(this.a); };
    var x = {a : 'b'};
    x.lol();
    
  • 通过使用函数“扩展”JSON:

    var json = {a : 'b', b : 123};
    function extend(obj) {
        obj.func1 = function(param) {
            alert(this[param]);
        }
    }
    extend(json);
    json.func1('b');
    
  • 通过将对象“制作”成一个函数:

    var json = {a : 'b', b : 123};
    function extendToFunc(obj) {
        var theLibrary = function(obj) {
            /**
             * The same as above.
            */
            this.func1 = function(param) {
                 alert(obj[param]);
            }
        };
        return new theLibrary(obj);
    }
    var jsonFunc = extendToFunc(json);
    jsonFunc.func1('b');
    

或者您可以为此使用 JS 框架。或者您能想到的任何其他方法 :) 我的示例很简单,它们可以扩展到您需要的任何复杂内容。

关于javascript - 如何为 JSON 对象设置原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097007/

相关文章:

java - 有没有办法缩短这段重复的代码? (添加 JPanel 组件)

typescript - 我应该在构造函数中抛出异常吗

php - 将 json 数据发送到 PHP

javascript - 将 document.write 转换为 getElementById/innerHTML

javascript - 工具提示在 lineChart Nvd3.js 中的错误位置?

c++ - 访问 ctor 中的私有(private)类内存

python - Pandas 打开 json 文件 JSON -ValueError : Expected object or value

java - 使用springfox创建对象json

javascript - 如何使用 JavaScript 设置表单按钮(没有 id)的标题属性

javascript - 在jquery ajax中发送表单数据