我有一個對象image
我可以做類似image.top
的事情,它會返回一個值,或者我可以做image.myPoints[0].left
,它會返回一個值。我基本上有這個圖像對象,爲我存儲值。我希望能夠把多個image
對象數組,所以我可以做這樣的事情:如何存儲對象數組?
$("#toPinpoint").mapImage({
useAjax: false,
pinpoints: [ { "top": 50,
"left": 280,
"width": 200,
"height": 200},
{ "top": 0,
"left": 0,
"width": 300,
"height": 74 } ]
});
我用這個函數來創建對象時,針點被添加到該對象。當mapImage函數被調用,這是發生了什麼:
$.fn.mapImage = function(options){
//Set user input options and defaults
var optionConfig = $.extend({}, $.fn.mapImage.defaults, options);
image=this;
this.image = this;
// Assign defaults
this.previewMode = optionConfig.previewMode;
this.pinpoints = optionConfig.pinpoints;
image.pinpoints = optionConfig.pinpoints;
image.pinpointCount = 0;
image.selected = 0;
...}
此設置圖像的屬性,現在我想用我的應用程序修改的爆破性質,那麼這些image
對象保存到一個數組。
我的問題是數組裝載圖像對象,但它似乎填充整個數組與我推入的對象,所以它不會保存我的舊圖像對象。例如,如果我做myArray[0].myPoints[0].left
,讓我們說它重新30,然後我推動myPoints [0] .left等於20的另一個圖像對象,我在數組中的第一個圖像對象變成20,而不是將其保存爲30.如果這是解決這個問題的好方法,那將不勝感激。謝謝!
我似乎無法複製這一點。你能發表更詳細的代碼示例嗎?當你說「流行」另一個圖像,你的意思是推?因爲他們有相反的結果。 – 2011-02-16 05:50:20
@安德魯馬歇爾:我的意思是推動抱歉,是的,我會舉一個更詳細的例子 – anthonypliu 2011-02-16 05:53:31
你的反模式顯示:`image = this; this.image = this;`嗨,我是一個循環引用! – ken 2011-02-16 06:51:19