0

セレクターの値をプロトタイプに送りたい。現在私は使用しています

var selector; //id of html element
function $(selector)
{
    if(window===this)
        return new $(selector);
    return this;
}
$.prototype={
    tooltip: function(){
        console.log(selector);
        //do calculations with the selector value
        return this;
    }
};

未定義と表示されています。

変数を渡す方法はありますか?

4

2 に答える 2

3

いいえ、プロトタイプ メソッドからはアクセスできません。パラメーターは、コンストラクターに対するselectorローカル変数です。

ただし、インスタンスのプロパティとして使用できるようにすることができます。

function $(selector) {
    if(!(this instanceof $))
        return new $(selector);

    this.selector = selector; // assigns the variable to a property
}
$.prototype.tooltip = function(){
    console.log(this.selector); // access the property on the instance
    //do calculations with the selector value
    return this;
};
于 2013-06-10T15:15:34.377 に答える
1

関数や設定をどこで呼び出しているのかわかりませんselectorselectorただし、1 つの問題は、 の定義の仮関数パラメーターが、$同じく という名前の外部変数をマスクすることselectorです。関数パラメータを削除すると、よりうまく機能するはずです(どこかに設定していると仮定しますselector):

var selector; //id of html element
function $()
{
    if(window===this)
        return new $(selector);
    return this;
}
$.prototype={
    tooltip: function(){
        console.log(selector);
        //do calculations with the selector value
        return this;
    }
};

あなたのコードが今書かれている方法は、次のように書かれているようです:

var selector; //id of html element
function $(x)
{
    if(window===this)
        return new $(x);
    return this;
}
$.prototype={
    tooltip: function(){
        console.log(selector);
        //do calculations with the selector value
        return this;
    }
};
于 2013-06-10T15:13:19.673 に答える