【问题标题】:Declare object and its prototype in a JSON block在 JSON 块中声明对象及其原型
【发布时间】:2011-04-28 11:43:49
【问题描述】:

我想在 Javascript 中伪造一个命名空间。这可以按如下方式完成:

var cars = {};
cars.car = function() {
    ...
}
cars.car.prototype = {
    drive: function() {
        ...
    }
}

工作正常。然而,我的问题是,我是否可以直接用 JSON 填充整个命名空间,如下所示:

var cars = {
    car: function() {
        ...
    },
    car.prototype: {
        drive: function() {
            ...
        }
    }
}

这行不通。我可以在 car() 函数中以某种方式声明汽车的原型吗?还是有其他方法可以解决这个问题?

【问题讨论】:

    标签: javascript json namespaces prototype


    【解决方案1】:

    马上,您需要在 JSON 对象(JavaScript 对象文字)中使用 :(“属性赋值运算符”)而不是 =(“赋值运算符”)。您也不能在对象字面量的属性赋值左侧使用属性访问器(. 或 [])。

    我认为你至少需要两个 JavaScript 语句来 (1) 声明一个函数表达式,以及 (2) 分配它的原型。这将阻止您执行您所描述的操作(“直接用 JSON 填充整个命名空间)。我不确定您为什么要这样做——运行两个 JavaScript 语句对于大多数用途来说都很好。

    【讨论】:

    • 哦,我刚才打错了,抱歉。已编辑。
    • 嗯,考虑一下你的答案,这就是它在 Clojure 中的工作方式(命名空间的一个表达式和一个函数),所以我想这很好。我的第一个例子是人们通常如何做的吗?
    • 第一个例子是我会怎么做。不要忘记函数表达式赋值后的分号。 :)
    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2023-03-20
    • 2013-10-12
    • 1970-01-01
    相关资源
    最近更新 更多