К сожалению, значение таких вещей, как (и \ (меняются между регулярными выражениями стиля Emacs и большинством других стилей). Поэтому, если вы попытаетесь избежать этого, вы можете делать противоположное тому, что вы хотите.
Итак, вам действительно нужно знать, какой стиль вы пытаетесь процитировать.
Легко быть перепутанным здесь, но Вы не можете (легко или ясно или насколько я знаю), делают то, что Вы хотите. Надо надеяться, это поможет ясным вещам встать.
Первый, каждый объект в JavaScript наследовался Объектному объекту.
//these do the same thing
var foo = new Object();
var bar = {};
115-секундный, функции объекты в JavaScript. А именно, они - Функциональный объект. Функциональный объект наследовался Объектному объекту. Контроль Функциональный конструктор
var foo = new Function();
var bar = function(){};
function baz(){};
, Как только Вы объявляете, что переменная "Объект", Вы не можете (легко или ясно или насколько я знаю) преобразовывает его в Функциональный объект. Необходимо было бы объявить новый Объект Функции типа (с функциональным конструктором, присвоив переменной анонимную функцию и т.д.), и копия по любым свойствам методов от старого объекта.
Наконец, ожидая возможный вопрос, даже как только что-то объявляется как функция, Вы не можете (насколько я знаю), изменяют functionBody/source.
Кажется, нет стандартного способа сделать это, но это работает.
, ПОЧЕМУ однако, вопрос.
function functionize( obj , func )
{
out = func;
for( i in obj ){ out[i] = obj[i]; } ;
return out;
}
x = { a: 1, b: 2 };
x = functionize( x , function(){ return "hello world"; } );
x() ==> "hello world"
нет просто никакого другого способа достигнуть, это, делая
x={}
x()
возвратит "ошибку типа". потому что "x" является "объектом", и Вы не можете изменить его. его почти столь же разумный как пытающийся сделать
x = 1
x[50] = 5
print x[50]
это не будет работать. 1 целое число. целые числа не имеют методов массива. Вы не можете сделать его.
Используйте временную переменную:
var xxx = function()...
тогда копия все свойства от исходного объекта:
for (var p in bar) { xxx[p] = bar[p]; }
наконец повторно присваивают новую функцию со старыми свойствами к исходной переменной:
bar = xxx;
JavaScript позволяет функциям рассматриваться как объекты - можно добавить свойство к функции. Как дела реверс, и добавляет функцию к объекту?
Вы, кажется, немного смущены. Функции, в JavaScript, объекты. И переменные переменная . Вы не ожидали бы, что это будет работать:
var three = 3;
three = 4;
assert(three === 3);
... итак, почему Вы ожидали бы, что присвоение функции к Вашей переменной так или иначе сохранит свое предыдущее значение? Возможно, некоторые аннотации разъяснят вещи для Вас:
// assigns an anonymous function to the variable "foo"
var foo = function() { return 1; };
// assigns a string to the property "baz" on the object
// referenced by "foo" (which, in this case, happens to be a function)
foo.baz = "qqqq";