第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何訪問事件內(nèi)的對象

如何訪問事件內(nèi)的對象

富國滬深 2021-12-23 16:22:28
我有這個帶有一些功能的對象。在某些時候,我想持有一個事件并在該事件中調(diào)用這個對象,但只有當你使用 this 調(diào)用這個對象時,有沒有辦法在沒有 this 的情況下調(diào)用它?我還沒有嘗試任何東西,因為我找不到任何幫助。const cantaVideoModal = {    click: null,    target: null,    urlVideo: null,    config: function (c) {        this.click = c.click;        this.target = c.target;        this.urlVideo = c.urlVideo;        this.init();    },    init: function () {        this.click = (this.click) ? document.querySelector(this.click) : null;        this.target = (this.target) ? document.querySelector(this.target) : null;        let btnCloseVideo = document.querySelector('[data-close-modal]');        if(btnCloseVideo){            btnCloseVideo.addEventListener('click', function(){                //call modalAction object here using this            })        }    },    modalAction: function (act) {        let elementClick = this.click;        let elementtarget = this.target;        if (elementClick) {            elementClick.addEventListener('click', function (e) {                e.preventDefault();                if (elementtarget) {                    if(act === "toggle")                        elementtarget.classList.toggle('in');                    if(act === "show")                        elementtarget.classList.add('in');                    if(act === "hide")                        elementtarget.classList.remove('in');                }            })        }    }}
查看完整描述

1 回答

?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

您不能使用的原因this是因為您位于addEventListener. 我不知道為什么,但是您可以創(chuàng)建一個引用當前對象的新對象,該對象可以在匿名函數(shù)中使用。有關(guān)為什么不能this在 inside 中使用的更多信息,addEventListener請參閱此答案


const cantaVideoModal = {

    click: null,

    target: null,

    urlVideo: null,

    config: function (c) {

        this.click = c.click;

        this.target = c.target;

        this.urlVideo = c.urlVideo;


        this.init();

    },

    init: function () {

        this.click = (this.click) ? document.querySelector(this.click) : null;

        this.target = (this.target) ? document.querySelector(this.target) : null;


        let btnCloseVideo = document.querySelector('[data-close-modal]');

        if(btnCloseVideo){

            // we create a new variable that refer to the current content.

            var self = this

            btnCloseVideo.addEventListener('click', function() {

                //call modalAction object here using self.

                self.modalAction(/* some parameters */);

            })

        }

    },

    modalAction: function (act) {

        let elementClick = this.click;

        let elementtarget = this.target;


        if (elementClick) {

            elementClick.addEventListener('click', function (e) {

                e.preventDefault();


                if (elementtarget) {


                    if(act === "toggle")

                        elementtarget.classList.toggle('in');


                    if(act === "show")

                        elementtarget.classList.add('in');


                    if(act === "hide")

                        elementtarget.classList.remove('in');

                }

            })

        }

    }

}


PS我嘗試使用箭頭函數(shù)但無法使代碼正常工作。


查看完整回答
反對 回復(fù) 2021-12-23
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號