1

コードサイズを最小限に抑えるために、いくつかの関数を短いエイリアスで呼び出したいと考えています。

(function(){
    var t = document.getElementById;
    t('element-id');
})();

このコードはError: Could not convert JavaScript argument. なんで?

4

3 に答える 3

4

関数を別の変数に割り当てると、その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');
})();
于 2013-02-14T03:40:24.477 に答える
3

ジョセフが言うように、this値が変化し、関数を台無しにします。次のことを試してください。

var t = function(i) {return document.getElementById(i);};
于 2013-02-14T03:41:22.577 に答える