2012-04-22 2 views
-1

Могу ли я сделать что-то в JavaScript, который будет автоматически преобразовать это:всегда превращаются в объект

var x = 0; 

в следующее (но только в memory-- я не хочу, чтобы изменить «источник вида»):

var x = {Value: 0}; 

Для Exemple:

var x = { Value: 0 }; 

function a(x) //This function doesn't work if the parameter is not an object, and it would be better if I didn't have to write { Value: 0 } 
{ 
    x.Value++; 
} 
a(x); 
alert(x.Value); 
+1

Можете ли вы дать нам пример того, как вы будете использовать что? – georg

+0

«было бы лучше, если бы мне не нужно было писать» объект, где требуется объект?!? просто используйте 'typeof x' внутри вашей функции – Aprillion

+0

нет, я имею в виду, что переменная по-прежнему является объектом, но объявление объекта является автоматическим – user1342369

ответ

0

взглянуть на watch и Object.watch() for all browsers? , Например:

var a = function (x) { 
    x.value++; 
}; 
var myVariables = {}; 
myVariables.watch("x", function (prop, oldval, newval) { 
        if (typeof newval !== 'object') { 
         return {"value": newval}; 
        }; 
       }); 
myVariables.x = 0; 
a(myVariables.x); 
alert(myVariables.x.value); 
+1

** часы ** функция нестандартный- лучший во избежание. – McGarnagle

+0

@dbaseman, поэтому я добавил вторую ссылку;)) – Aprillion

1

Вопрос не хватает контекста и деталей, но, возможно, сделать это следующим образом:

function transform(x) { 
    return { Value : x }; 
} 

и затем

x = transform(x); 
+0

и могу ли я связать каждое объявление переменной с помощью этой функции? – user1342369

+2

Нет, вы не можете переопределить поведение объявления переменных в Javascript, и вам нужно вручную декорировать объявления переменных или выполнить преобразование в какой-либо другой конечной точке (например, иметь свой собственный console.log()) –

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