0

我想填充一個字典(JavaScript對象),並從它檢索值(自定義對象/類)使用字符串索引。然後,一旦我從字典中獲得值,我需要在這個對象上調用一個方法。不幸的是,這是行不通的,因爲一旦從字典中檢索它,它只是一個簡單的對象(typeof返回「對象」)。調用從字典JavaScript對象檢索的對象上的方法

所以我試圖做的事情是投射到最初被推入字典中的對象類型,這是我的情況:google.visualization.Gauge。 (Reference

我試圖使用Object.create但這對我沒有用。下面是我的代碼:

var _gauges = {}; 

var methods = { 
    init: function (options) { 

     var containers = this; 

     if (containers != null && containers != undefined && containers.length > 0) { 
      containers.each(function (index, elem) { 

       var id = $(elem).attr('id'); 
       var name = $(elem).data('name'); 
       var value = $(elem).data('value'); 

       var data = google.visualization.arrayToDataTable([ 
      ['Label', 'Value'], 
      [name, value] 
       ]); 

       var options = { 
        width: 400, height: 120, 
        redFrom: 90, redTo: 100, 
        yellowFrom: 75, yellowTo: 90, 
        minorTicks: 5 
       }; 
       var cont = document.getElementById(id); 
       var chart = new google.visualization.Gauge(cont); 
       _gauges[name] = chart; 
       chart.draw(data, options); 
      }); 
     } 

    }, 
    setValue: function (gaugeName, newValue) { 
     var thisGauge = _gauges[gaugeName]; 
     if (thisGauge) { 
      thisGauge.setCell(0, 1, newValue); 
      //var tmp = Object.create(google.visualization.Gauge, thisGauge); 
      //tmp.setCell(0, 1, newValue); 
     } 
    } 
+1

沒有「setCell」法*在JavaScript中的所有*的對象是「只是簡單的對象」。 – Pointy

+0

如果您在未嘗試投射的情況下直接調用對象,會收到什麼錯誤? – dSquared

+0

我明白了,但是如何調用一個定義在*簡單對象*上的方法呢? – Kassem

回答

1

好吧,兩件事情:

  1. 如果這些「指標」的一個對象真的是越來越放入數組正確,當你把它找回來了會毫髮無損你可以直接使用它;不需要「鑄造」。
  2. 根據您鏈接的文檔,有:-)
+0

接受答案。我甚至不需要投,感謝很多:) – Kassem