当我在javascript中使用this关键字时遇到严格违规时,这意味着什么



有人能给我这个建议吗。我刚开始使用jslint,收到一条错误消息"strict violation",指向带有"dialog(this)"-的行

function accessLinkClick(e) {
e.preventDefault();
$('.accessLink')
.unbind('click', accessLinkClick);
dialog(this);
}
function accessControls() {
$('.accessLink')
.bind('click', accessLinkClick);
$('#logoutLink')
.click(function (e) {
window.location = $(this).attr('data-href');
});
}

我以前从未见过这条消息。这是什么意思?

规范的附录C这样解释:

如果this是在严格模式代码中计算的,则此值不会被强制到对象nullundefinedthis值不会转换为全局对象,基元值也不会转换为包装对象。通过函数调用传递的this值(包括使用function.prototype.apply和function.protype.call进行的调用)不会将传递的this值强制传递给对象(10.4.3、11.1.1、15.3.4.3、15.3.4.4)。

在上述代码中使用e.target而不是this

参考

  • 注释ES5:附录C

相关内容

最新更新