2010-10-21 2 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). Вы также не можете использовать свойство accessor (. Или []) в левой части присвоения свойства в объектном литерале.

Мне кажется, что вам нужно как минимум два оператора в JavaScript (1) объявить выражение функции, и (2) назначить его прототип. Это не позволит вам делать то, что вы описываете («прямое заполнение всего пространства имен с помощью JSON). Я не уверен, почему вы пытаетесь это сделать - выполнение двух операторов JavaScript подходит для большинства целей.

+0

О, я просто набрал это и сделал ошибку, извините. Отредактировал его. – jringots

+0

Хм, немного подумав о вашем ответе, так оно работает в Clojure (одно выражение для пространства имен и одной функции), поэтому я думаю это мой первый пример, как люди обычно это делают? – jringots

+0

Первый пример: как бы я это сделал. Не забывайте точки с запятой после назначений выражения функции. :) – Zach

Смежные вопросы