4
所以,我想擴展一個谷歌地圖類,特別是google.maps.OverlayView(在v3中)。這樣做香草js方式完全有效。原型Class.create沒有正確的子類
POIOverlay = function(marker, poi, type)
{
this._marker = marker;
this._poi = poi;
this._type = type;
this._div = null;
this.latlng_ = marker.getPosition();
this._map = marker.getMap();
this._offsetVertical = -195;
this._offsetHorizontal = 0;
this._height = 165;
this._width = 266;
}
POIOverlay.prototype = new google.maps.OverlayView();
POIOverlay.prototype.create = function()
{
console.log(this)
}
POIOverlay.prototype.draw = function()
{
//stuff
}
然而,這樣做原型的方式,無法添加的父類方法的任何:
POIOverlay = Class.create(new google.maps.OverlayView(), {
initialize : function(marker, poi, type)
{
this._marker = marker;
this._poi = poi;
this._type = type;
this._div = null;
this.latlng_ = marker.getPosition();
this._map = marker.getMap();
this._offsetVertical = -195;
this._offsetHorizontal = 0;
this._height = 165;
this._width = 266;
},
create : function()
{
if(this._div) return;
console.log(this);
},
draw : function()
{
//stuff
}
});
這裏是實例/使用類的代碼:
try
{
poio = new POIOverlay(marker,poi,type);
}
catch(e)
{
console.log(e);
}
google.maps.event.addListener(marker, 'click',
poio.draw.bind(poio)
);
在第一個示例中,控制檯使用父級和子級方法/屬性記錄對象。在第二個示例中,控制檯記錄一個沒有父屬性/方法的對象。
顯然,這是不是太什麼大不了的事,但我在任何人想知道其他人碰到這個問題,如果它是很容易糾正。我正在使用原型1.7。
不知父類必須是一個由原型自己的系統中創建... – Pointy 2011-03-04 20:11:57