私は言葉で説明するのが難しいと思っていますので、試してみますがFirefox/firebugがtailspinに入ります。JavaScriptのプロトタイプ関数を使用して 'this'コンテキストの変数を初期化しています
thisとthisを参考にしています。私がここでやろうとしているのは、
- です。新しいMyObject.Method( 'string'、optionsArray);
optionsArray項目が反復し、プロトタイプの機能セットを(使用して保存されている)
if(typeof(MyObj) == 'undefined') MyObj= {}; MyObj.Method = function initialise(id,options) { this.id = id; this.options = options; this.properties ={}; for (var i = 0; i < this.options.length; i++) // =>options.length=2 (correct) { var obj = this.options[i]; //get the keynames, pass with values to Set() to update properties for (var keys in obj) { console.log(keys); //=> correctly prints 'property1' and 'currentValue' this.Set(keys,obj); //=> this is i guess where it enters a loop? } } } //sets properties MyObj.Method.prototype.Set = function (name, value) { this.properties[name.toLowerCase()] = value; }
と私のhtmlページのスクリプトブロックでは、私は
window.onload = function() { var options = [ { property1: { show: true, min: 0, max: 100 } }, { currentValue: { show: true, colour: 'black' } } ]; var myObj = new MyObj.Method('someDivId',options); }
を持っている私はあればアドバイスしてくださいコードを複雑にする私は、hasOwnPropertyをチェックすると助けになると思います。
ここで何をしようとしているのかは分かりません。そのコードは本当にあまり意味がありません。 "Set"関数は、 "Gauge.Speedometer"と呼ばれるもののプロトタイプオブジェクト上にあります。したがって、 "MyObj"または "MyObj.Method"とは何も関係ありません。 – Pointy
@Pointyが修正されました。 – Abhijit
'options'配列が初期化されたり宣言されたりする前に' MyObj.Method'を呼び出すのは、意図的なのか、それとも単にタイプミスですか? – roryf