2012-04-22 66 views
-1

我可以做在Javascript東西,機器會自動改變這個:總是轉換爲對象

var x = 0; 

爲以下(但只在memory--我不想改變「查看源文件」):

var x = {Value: 0}; 

對於爲例:

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 2012-04-22 09:11:18

+0

「如果我不必寫」需要對象的對象,那會更好?!?只需在函數中使用'typeof x' – Aprillion 2012-04-22 09:21:26

+0

否,我的意思是變量仍然是一個對象,但對象的聲明是自動的 – user1342369 2012-04-22 09:23:51

回答

0

看看watchObject.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 2012-04-22 09:51:20

+0

@dbaseman這就是爲什麼我添加了第二個鏈接;)) – Aprillion 2012-04-22 09:52:51

1

問題缺乏內容和細節,但也許不喜歡這樣寫道:

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

然後

x = transform(x); 
+0

我可以將每個變量的聲明與這個函數關聯嗎? – user1342369 2012-04-22 09:15:31

+2

不,你不能重寫Javascript中的變量聲明行爲,你需要手動裝飾變量聲明或在其他端點執行變換(例如,擁有自己的console.log()) – 2012-04-22 09:24:51