多くの人が私の最後の質問で混乱します。私はこれで何かをクリアできることを願っています。ここに私がする必要があるものがあります:呼び出されたときにJavaScript配列の値が自動更新されるようにする
var arr = ["Init Value", "Does Not", "Matter"];
arr.onGet = updater; // Register arr with updater function
alert(arr[0]); // should return 1;
alert(arr[0]); // should return 2;
alert(arr[0]); // should return 3;
alert(arr[0]); // should return 4;
alert(arr[0]); // should return 5;
var counter = 0;
function updater(){
counter = counter + 1;
return counter;
}
私はそこで何をしましたか?初期値は重要ではありませんが、値を取得するのはアップデータ関数です。
arrが関数アップデータを自動的に呼び出さず、イベントonGetがないため、これはもちろん機能しません。何人かの人は言うかもしれませんが、それはちょうど狂った話です。呼び出されなくても、どのように機能を実行できますか?それは本当ですが、VARIABLEが呼び出されます(この例ではarr [0]なので、arr [0]が呼び出されたときに他の関数にバインド(リンク)することはできませんか?本質的に、これは自動更新。、したがって、私の質問
はまた、私はIE7でこれを仕事にしようとあきらめている、どのようにSKYDでわずかGoogle Chromeの
ソリューションについて:?
function onGet(obj) {
var index = 0;
var counter = 0;
for (var prop in obj) {
(function(thisIndex, thisProp) {
obj.__defineGetter__(thisIndex, function() {
counter = counter + 1;
return counter ;
});
})(index, prop)
index++;
};
obj.__defineGetter__("length", function() {
return 1000;
});
return obj;
}
var myObj = [100,200,300];
onGet(myObj);
alert(myObj[1]); // 1
alert(myObj[2]); // 2
alert(myObj[3]); // 3
alert(myObj.length); // 1000 <-- Arbitary value which you can change
は、私はあなたが本当に知りたい場合は、これは本当に – Ibu
のために使用されているのだろうか、私はコンセプトで唯一除いて存在していない任意の配列を作成しています。任意の数字のように - 有用ですが、物理的な意味では本物ではありません。 – Bill
[JSオブジェクトをARRAYオブジェクトとして使用]の複製が可能です(http://stackoverflow.com/questions/8512405/use-js-function-as-a-array-object) – Neal