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

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

如何在參數(shù)化函數(shù)中使用對象屬性?

如何在參數(shù)化函數(shù)中使用對象屬性?

婷婷同學_ 2023-03-24 14:53:52
我一直在研究一個項目中的對話框,并將它變成一個對象構造函數(shù)。function createDialog(title, noClicked = function(){}, yesClicked = function(){}) {  this.dialog = document.getElementsByClassName("dialog")[0];  this.dialogTitle = this.dialog.getElementsByTagName("h1")[0];  this.No = this.dialog.getElementsByTagName("button")[0];  this.Yes = this.dialog.getElementsByTagName("button")[1];  var dialog = document.getElementsByClassName("dialog")[0];  this.dialogTitle.innerHTML = title;  document.getElementsByClassName("dialogCon")[0].style.display = "flex";  noClicked();  yesClicked();}<div class="dialogCon">      <div class="dialog">        <h1></h1>        <button type="button">No</button>        <button type="button">Yes</button>      </div>    </div>問題是,當我想訪問“this.no”或“this.yes”時,我不斷收到Cannot read property 'No' of undefined。當我使用以下代碼時發(fā)生了這種情況:var d = new createDialog("Sample dialog. Exit?", function() {  console.log(d.No);}, function() {  console.log(d.Yes);});我需要使用 d.No 關閉對話框。還有其他方法嗎?或者至少是一個修復。我知道我可以從構造函數(shù)本身關閉對話框,但我也想讓它也可以做其他事情(比如檢測用戶是否選擇是或否)。
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您在構造函數(shù)中立即調用noClicked()和 yesClicked()。我想你會想在點擊No和Yes時給他們打電話。您需要將這些功能添加到按鈕的事件偵聽器中。試試下面的片段。


function createDialog(title, noClicked = function(){}, yesClicked = function(){}) {

  this.dialog = document.getElementsByClassName("dialog")[0];

  this.dialogTitle = this.dialog.getElementsByTagName("h1")[0];

  this.No = this.dialog.getElementsByTagName("button")[0];

  this.Yes = this.dialog.getElementsByTagName("button")[1];


  var dialog = document.getElementsByClassName("dialog")[0];

  this.dialogTitle.innerHTML = title;

  document.getElementsByClassName("dialogCon")[0].style.display = "flex";

  this.No.addEventListener('click',noClicked);

  this.Yes.addEventListener('click',yesClicked);

}

  


 var d = new createDialog("Sample dialog. Exit?", function() {

               console.log(d.No);

            }, function() {

               console.log(d.Yes);

           });

<div class="dialogCon">

      <div class="dialog">

        <h1></h1>

        <button type="button">No</button>

        <button type="button">Yes</button>

      </div>

    </div>


查看完整回答
反對 回復 2023-03-24
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

因為你現(xiàn)在有了構造函數(shù),回調會立即被調用,只有在它們被調用之后構造函數(shù)才會返回。對此有兩點評論:

  1. 由于調用回調時構造函數(shù)尚未返回,因此變量d尚未收到值。所以d在回調中將是undefined

  2. 這是不現(xiàn)實的,因為在實踐中您只想調用其中一個回調,并且僅在用戶單擊按鈕時調用。那個時候d會被定義。

您仍然可以通過傳遞對構造對象的顯式引用來解決它。例如,您可以將其作為this對象傳遞:

改變:

noClicked();

...到:

noClicked.call(this);

然后在您的回調中,更改:

console.log(d.No);

...到:

console.log(this.No);


查看完整回答
反對 回復 2023-03-24
  • 2 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號