2010-10-21 37 views
2

我想在Javascript中僞造一個名稱空間。這可以如下完成:在JSON塊中聲明對象及其原型

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

工作正常。我的問題,但是,如果我可以直接補全命名空間JSON,像這樣:

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

這是行不通的。我可以以某種方式在car()函數中聲明汽車原型嗎?還是有另一種方法來解決這個問題?

回答

1

就在JSON對象(JavaScript對象文本)中,您需要使用:(「屬性賦值運算符」)而不是=(「賦值運算符」)。您也不能在對象文本中使用屬性賦值左側的屬性訪問器(。或[])。 (1)聲明一個函數表達式,(2)分配它的原型。這會阻止你完成你所描述的任務(「直接用JSON填充整個命名空間)。我不確定你爲什麼要這樣做 - 運行兩條JavaScript語句對大多數目的都沒有問題。」

+0

噢,我剛剛輸入了這個,並且犯了一個錯誤,很抱歉,編輯它 – jringots 2010-10-21 08:43:56

+0

嗯,考慮一下你的答案,這就是它在Clojure中的工作方式(一個用於名稱空間和一個函數的表達式),所以我猜這很好,我的第一個例子是人們通常怎麼做的嗎 – jringots 2010-10-21 08:52:41

+0

第一個例子是我該怎麼做,不要忘記函數表達式賦值之後的分號:) – Zach 2010-10-21 09:07:12