如何在javascript中显示回调函数的参数?

时间:2017-12-29 07:34:36

标签: 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中限制或调用参数信息给用户。 对此有什么想法吗?评论只是解决这个问题的方法吗?

p.s:不像ts,我只想要js。

3 个答案:

答案 0 :(得分:0)

所有功能参数都出现在Arguments Scope中 你在任何函数内部console.log(arguments),它会记录你控制台上的所有参数。

编辑: 除非通过注释的常规文档方式,否则在JavaScript中无法预定义回调签名。

这在TypeScript中也是可行的,但格式相似。 public myCallback: (name: type) => returntype;

答案 1 :(得分:0)

如果您想要参数,可以使用参数:

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

答案 2 :(得分:0)

Javascript没有办法在代码中声明回调函数的签名。您应该将它放在组件的文档中,例如

  

onPageUpdate:function(string argName1,object argName2,...)

有关示例,请参阅jQuery如何描述jQuery.each

中的回调函数