【问题标题】:Calling a method on an object retrieved from Dictionary JavaScript object对从 Dictionary JavaScript 对象检索到的对象调用方法
【发布时间】:2012-06-01 15:12:12
【问题描述】:

我正在尝试使用字符串索引填充字典(JavaScript 对象)并从中检索值(自定义对象/类)。然后,一旦我从字典中获取值,我需要调用这个对象的方法。不幸的是,这不起作用,因为一旦从字典中检索到它,它就只是一个简单的对象(typeof 返回“对象”)。

所以我想做的事情是转换为最初被推入字典的对象类型,在我的例子中是: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);
        }
    }

【问题讨论】:

  • 所有 JavaScript 中的对象都是“只是简单的对象”。
  • 如果您直接调用对象而不尝试强制转换,您会收到什么错误?
  • 我明白,但是如何调用定义在简单对象上的方法?
  • 你试过thisGauge.setCell(...);吗?它会产生错误吗?
  • 你应该发布将东西放入_gauges数组的代码。

标签: javascript jquery jquery-plugins casting javascript-objects


【解决方案1】:

嗯,有两件事:

  1. 如果其中一个“Gauge”对象确实被正确放入数组中,当您将其取出时,它会毫发无伤地出现,您可以直接使用它;无需“铸造”。
  2. 根据您链接的文档,没有“setCell”方法:-)

【讨论】:

  • 已接受答案。我什至不需要投射,非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 2012-06-10
  • 2016-10-11
  • 2011-10-22
相关资源
最近更新 更多