簡體   English   中英

如何在JavaScript中顯示回調函數的參數?

[英]How to show callback function's parameter in javascript?

如何向用戶顯示回調函數的參數?

我正在用javascript編寫表格的分頁組件。 這是我的組件代碼。 (尚未完成)

function ComponentPagination(paginationAreaID, pageViewDataCount , 
totalDataCount, ajaxUrl)
{

//div
var paginationArea = document.getElementById(paginationAreaID);

//prev button
var prevBtn = document.createElement("a");
prevBtn.textContent = "Prev";
paginationArea.appendChild(prevBtn);

//page buttons
var pageCount = (totalDataCount / pageviewDataCount);

for (var i = 0; i < pageCount; ++i) {
    var pageBtn = document.createElement("a");
    pageBtn.textContent = (i + 1) + "";
    paginationArea.appendChild(pageBtn);
}

//next button
var nextBtn = document.createElement("a");
nextBtn.textContent = "Next"
paginationArea.appendChild(nextBtn);

//Use this method to set callback function
//The call back function called when user click page button <a> or 
//next or prev button.

this.addCallBack = function(onUpdatePagingMethod)
{
    // (example)
    var clickedButton;// = clickedButtonIndex;
    this.onUpdatePagingMethodCallBack = onUpdatePagingMethod;
    //and then it will call when update will neccessay
    //like  this.onUpdatePagingMethodCallBack(clickedButton, ajaxUrl);   
}
}

用戶將使用類似..

<script>
windows.onload = function()
{
 //the total data is 105 and the page will show each 10 items
 var pagination = new ComponentPagination("pageArea", 10, 
 105,"/API/FileList");

 //Register CallBack 
 pagination.addCallBack( onPageUpdate );
}

然后,用戶將設計名稱在PageUpdate上的回調函數。

但是,用戶無法知道addCallBack()方法想要的回調函數的參數信息。 像這樣。

function onPageUpdate(/* hum? how should i know the parameter? */)
{

}

在c或c ++中具有函數指針(可能使用typedef),因此它可以限制參數數量和每種類型,並且用戶可以推斷出如何設計回調函數和參數含義。

我不知道如何在javascript中限制或調用用戶的參數信息。 有什么想法嗎? 評論是解決這個問題的唯一方法嗎?

ps:不像ts,我只想要js。

所有函數參數都存在於您在console.log(arguments)任何函數的Arguments Scope中 ,並且它將在控制台上記錄所有參數。

編輯:除非通過注釋通常的文檔方式,否則在JavaScript中無法預定義回調的簽名。

不過,在TypeScript中這是可能的,格式類似。 public myCallback: (name: type) => returntype;

好吧,如果您想要參數,則可以使用參數:

function onPageUpdate()
{
   for (var i = 0; i < arguments.length; i++) {
    console.log(arguments[i]);
  }
}

Javascript無法在代碼中聲明回調函數的簽名。 您應該將其放在組件的文檔中,例如

onPageUpdate :函數(字符串argName1,對象argName2,...)

舉一個例子,看看jQuery的描述在回調函數jQuery.each

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM