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