Javascript将功能添加到google.maps.Map

时间:2013-08-31 16:11:10

标签: javascript google-maps

我在向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();
}

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

我很想知道我在这里做错了什么,以及对于狡猾的解释!

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

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

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