我在向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对象至?在这种情况下,我将如何调用其他函数?
答案 0 :(得分:0)
回答我自己的问题:
这是我的愚蠢!我使用mapObject.getPictureDataFromJson()作为jquery.get()的成功回调,因此this
引用了调用者(get函数)而不是map对象。