Javascript 如何在函数中访问函数的属性

Javascript 如何在函数中访问函数的属性,javascript,Javascript,如何访问元素的jQuery单击处理程序内部的isExpanded、collapsedHeight和expandedHeight,现在编写的方式不起作用,因为这个在单击处理程序内部意味着与外部不同的东西。 function CoolSelect(element) { this.element=element; this.isExpanded=false; this.collapsedHeight=$(element).height(); this.expandedH

如何访问
元素
的jQuery单击处理程序内部的
isExpanded
collapsedHeight
expandedHeight

现在编写的方式不起作用,因为
这个
在单击处理程序内部意味着与外部不同的东西。

function CoolSelect(element)
{
    this.element=element;
    this.isExpanded=false;
    this.collapsedHeight=$(element).height();
    this.expandedHeight=this.collapsedHeight+$('ul',element).height();

    $(this.element).click(function()
    {
        var newHeight;
        if(this.isExpanded){newHeight=this.collapsedHeight;}
        else{newHeight=this.expandedHeight;}
        $(this.element).animate({height:newHeight},100,'liniar');
    });
}

谢谢。

将此
的值复制到外部函数中的另一个变量

var that = this;

然后在内部函数中使用
that

this
的值复制到外部函数中的另一个变量

var that = this;

然后在内部函数中使用
that

您需要保存对此的引用。
var that = this;
此代码使用
var=This

function CoolSelect(element)
{
    this.element=element;
    this.isExpanded=false;
    this.collapsedHeight=$(element).height();
    this.expandedHeight=this.collapsedHeight+$('ul',element).height();
    var that = this;

    $(this.element).click(function()
    {
        var newHeight;
        if(that.isExpanded){newHeight=that.collapsedHeight;}
        else{newHeight=that.expandedHeight;}
        $(that.element).animate({height:newHeight},100,'liniar');
    });
}

您需要保存对此的引用。 此代码使用
var=This

function CoolSelect(element)
{
    this.element=element;
    this.isExpanded=false;
    this.collapsedHeight=$(element).height();
    this.expandedHeight=this.collapsedHeight+$('ul',element).height();
    var that = this;

    $(this.element).click(function()
    {
        var newHeight;
        if(that.isExpanded){newHeight=that.collapsedHeight;}
        else{newHeight=that.expandedHeight;}
        $(that.element).animate({height:newHeight},100,'liniar');
    });
}

谢谢你,莱姆。我选择了最先发布的答案。否则,你的成绩也一样好。16秒会有很大的不同:DI没有其他标准。哈哈,谢谢你,莱姆。我选择了最先发布的答案。否则,你的成绩也一样好。16秒会有很大的不同:DI没有其他标准。哈哈。出于好奇,如果我只是将每个类属性声明为
var
并在内部函数中访问它,不是会更容易吗?出于好奇,如果我只是将每个类属性声明为
var
并在内部函数中访问它,不是会更容易吗?