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但是,一个问题是您定义中的形式函数参数$掩盖了也命名为 的外部变量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 回答