我想通过较短的别名调用一些函数以最小化代码大小。
(function(){
var t = document.getElementById;
t('element-id');
})();
这段代码给出了Error: Could not convert JavaScript argument
. 为什么?
我想通过较短的别名调用一些函数以最小化代码大小。
(function(){
var t = document.getElementById;
t('element-id');
})();
这段代码给出了Error: Could not convert JavaScript argument
. 为什么?
当您将函数分配给不同的变量时,它的this
值会发生变化。由于getElementById
期望this
是一个元素,因此您会遇到错误。
如果您在可以使用的环境中,请bind
使用它:
(function(){
var t = document.getElementById.bind(document);
t('element-id');
})();
这将确保t
'this
将保留document
对象。
如果不能使用bind
,则必须创建一个中间函数:
(function() {
function t (id) {
document.getElementById(id);
}
t('element-id');
})();
正如约瑟夫所说,this
价值发生了变化,它破坏了功能。尝试以下操作:
var t = function(i) {return document.getElementById(i);};
所以在这种情况下,你可以做
let t = (id) => document.getElementById(id);
t(“myElement”)
这意味着使用返回对象的箭头函数,就像 document.getElementById(“”) 一样。