コードサイズを最小限に抑えるために、いくつかの関数を短いエイリアスで呼び出したいと考えています。
(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);};