为什么不调用我的回调?

Mar*_*ijn 1 javascript callback

var handler = new Handler();

var iife = (function() {
    return {
        doAlert: doAlert
    };

    function doAlert() {
        alert('testing');
    }
})();

function Bar(){
  this.doFirst = function(){
    handler.add("x", iife.doAlert);
  }
}

function Handler(){
  this.add = function(caption, callback){
    var linkText = document.createTextNode(caption);
    var href = document.createElement("a");
    href.appendChild(linkText);
    href.setAttribute("href", "#");
    href.setAttribute("onclick", callback);

    $(".bc").append(href);
  }
}
Run Code Online (Sandbox Code Playgroud)

鉴于此代码,我的回调在Dom中可见

function doAlert() {
    alert('testing');
}
Run Code Online (Sandbox Code Playgroud)

这实际上就在我的onclick属性中.显然这不是我想要的.我需要做什么才会显示警报?我期待看到类似的东西doAlert(),为什么不是这样的?

Que*_*tin 6

属性值是字符串.由于传递函数,.toString()因此隐式调用其方法来设置属性值onclick.

切勿使用onclick属性.addEventListener改用.

href.addEventListener("click", callback);
Run Code Online (Sandbox Code Playgroud)