0

我在向 google.maps.Map 对象添加两个函数(一个调用另一个函数)时遇到了一点困难

google.maps.Map.prototype.addMarkerFromJson = function() {
    alert("hi");
}

google.maps.Map.prototype.getPictureDataFromJson = function (jsonObj) {
    this.addMarkerFromJson();
}

此代码引发错误:

Uncaught TypeError: Object #<Object> has no method 'addMarkerFromJson'

这本身就令人费解,更让我困惑的是当我更改名称时:

google.maps.Map.prototype.anotherTestFunction = function() {
    alert("hi");
}

google.maps.Map.prototype.aTestFunction = function (jsonObj) {
    this.anotherTestFunction();
}

这仍然不起作用(警报不会被触发)但它也不会在控制台中引发错误?

很想知道我在这里做错了什么以及对奇怪的解释!

编辑:当我再看一遍时,我开始认为thisinthis.addMarkerFromJson();实际上是指 function() 定义,而不是我将其附加到的 Map 对象?在这种情况下,我将如何调用另一个函数?

4

1 回答 1

0

回答我自己的问题:

这是我傻了!我使用 mapObject.getPictureDataFromJson() 作为 jquery.get() 的成功回调,因此this指的是调用者(get 函数)而不是地图对象。

于 2013-08-31T16:45:54.413 回答