Я не совсем уверен, как задать этот вопрос, поэтому я сделаю это на примере. Скажем, у меня есть это установить:Функция против конструктора объекта
var x = function() {
console.log('YAY!');
};
x.test0 = 0;
x.test1 = 1;
x.test2 = "hello world";
, который работает, как ожидалось:
x(); // YAY!
x.test0 // 0
x.test2 // "hello world"
Теперь, я хотел бы знать, как установить это, начиная с объекта первого. Я попытался добавить функцию с помощью конструктора, но это не работает.
var x = {
test0 : 0,
test1 : 1,
test2 : 'hello world',
constructor: function() {
console.log('YAY!');
}
}
x(); // object is not a function
x.test0 // 0
x.test2 // "hello world";
Я пробовал другие сумасшедшие вещи, но ничего не работает.
Любые идеи? Или я застрял, делая это первым способом?
В чем проблема, которую вы пытаетесь решить? – Pointy
Я просто хотел бы знать, как начать с объекта и прикрепить к нему функцию, поэтому 'x()' запускает функцию. – Mottie
Функции - это единственный собственный тип EMCAScript, вызываемый. Вы не можете сделать функцию, не подлежащую вызову, потому что ECMAScript не предоставляет никакого способа манипулировать внутренним свойством '[[Call]] объекта. Если вы хотите сделать объект в функции, почему бы просто не сделать его функцией в первую очередь? – apsillers