午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

javascript - 事件綁定函數中this是事件的綁定的對象,怎么才能在該函數中引用實例化對象?

瀏覽:172日期:2023-03-07 14:41:10

問題描述

用的Leaflet框架,準備擴展一個對象。代碼如下:

var FxtMap = L.Class.extend({_preZoom: 4,_initZoom: 4,_queryScale: 7,_map:null,fxtData: null,options: { center: [31.2, 121.46715194], zoom: 4, crs: sh_crs, doubleClickZoom: false, zoomControl: false, attributionControl: false},initialize: function (id, mapOption) { if (mapOption) {L.Util.setOptions(this, mapOption); } this._map = L.map(id, this.options); m_tileLayer.addTo(this._map); m_oldView = this._map.getBounds(); this._map.on({zoomstart: this.getPreZoom,zoomend: this.triggerLyrChange,viewreset: MapViewReset,moveend: MapDrag }); this._map.invalidateSize('true');},getPreZoom: function (e) { this._preZoom = this._map.getZoom();},triggerLyrChange: function () { if (this._map.getZoom() == this._queryScale && this._map.getZoom() > this._preZoom) {this._map.fire(’jsonLyrType’); } if (this.getZoom() == this._queryScale - 1 && this._map.getZoom() < this._preZoom) {this._map.fire(’imgLyrType’); }},... })

getPreZoom和triggerLyrChange都是事件綁定函數,函數中的this就是對象的_map,怎么在這個函數里面正確引用實例化對象?只能用FxtMap.prototype嗎?

問題解答

回答1:

樓上講的沒問題,用bind就行,或者你可以自己模擬一個bind,

Function.prototype.NewBind = function(obj){ var _self = this; return function(){_self.call(obj,arguments); };};//調用的話getPreZoom: function (e) { this._preZoom = this._map.getZoom();}.NewBind(this)//和bind一樣回答2:

自己搞明白了,自問自答一下。這是js中典型的’this’變量的問題,在事件綁定函數中,回調函數最終是被事件綁定對象所調用,故此時的’this’指向該對象,此時想要將回調函數中的’this’變量指向實例對象,需要通過Function.prototype.bind手動改變this的指向。

標簽: JavaScript
主站蜘蛛池模板: 国产成人精品综合久久久久99 | 欧美天堂网站 | 精品成人在线 | 国内av网站 | 久久久成人免费视频 | 国产精品一区二区在线播放 | 久久亚洲视频 | 激情五月色播 | 欧美在线影院 | 国产高清在线 | 色伊人影院 | 美腿丝袜av | 美女视频毛片 | 色资源av | 欧美日韩精品在线视频 | 久久性网 | 国产香蕉av | 亚洲精品高潮 | 中文字幕在线观看视频网站 | 久久久免费 | 成人亚洲片 | 欧美激情黑人 | 久久伊人精品 | 亚洲高清视频在线播放 | 69久久久 | 日韩精品一二三四区 | 免费黄色在线 | 成人小视频免费在线观看 | 天堂中文资源在线观看 | 日韩精品播放 | 在线观看视频国产 | 亚洲欧美视频在线观看 | 六月久久 | 天天干天天操天天插 | 免费在线看黄网站 | 精品欧美日韩 | 日韩av片在线免费观看 | 大地资源在线资源 | 殴美一级黄色片 | 久久久久草 | 四虎影视一区二区 |