自分用メモ。
JavaScriptよくわからないのであまり参考にならないと思います。
Q. アンダースコアがついてるメソッドとかプロパティはなに?
A. プライベートメソッド
アンダースコアがついてるメソッドはドキュメントには載らないっぽい。
Q. 自作したClassのClassを識別するには?
instanceof
演算子を使うっぽい
var a = new MyChildClass();
a instanceof MyChildClass; // true
a instanceof MyClass; // true
Q. 既存のClassを継承(extend)したクラスで継承元のclassのメソッドをオーバーライドするには
継承先のClassで普通にメソッドを実装して、実装したメソッドの中でクラス名.prototype.メソッド名
を呼ぶ。
第1引数にthisを渡して、第2引数以降にメソッドの引数を渡す。
var MyChildClass = MyClass.extend({
initialize: function () {
MyClass.prototype.initialize.call(this, "Yo");
},
greet: function (name) {
MyClass.prototype.greet.call(this, 'bro ' + name + '!');
}
});
var a = new MyChildClass();
a.greet('Jason'); // alerts "Yo, bro Jason!"
Q. 自作ClassでもL.map()みたいなfactoryを使いたい
ドキュメントにfactoryって書いてあるけどfactoryパターンのfactoryかな。
new L.Map('map'); // こう書くべきところを
L.map('map'); // こう呼び出せる
L.map = function (id, options) {
return new L.Map(id, options);
};
Q. Popupに画像を表示させると枠からはみ出す
leafletのコード追ってないので原因はよく理解してない(画像を描画するまで画像のwidthとheightがわからないのが原因だと思う)けど、2通りの解決方法がある。
- CSSでwidthとheightを指定する
var html = '<img src="" alt="" style="width:;height:" />';
var popup = L.popup().setContent(html);
- dom要素を生成してからsetContent()する
var html = '<img src="" alt="" />'
var divNode = document.createElement('DIV');
divNode.innerHTML = html;
var popup = L.popup().setContent(divNode);