示例JS函数中的“this”是什么?

时间:2011-06-20 15:07:15

标签: javascript jquery this

以下是JS / JQuery文件的全部内容。我没有写它,但我正在尝试添加它。我无法理解this指的是什么。我之前没有看到以这种风格设置的功能(SmartPhone = function() {}

SmartPhone = function()
{
    this.miniMap = new GameModeMap();

    this.init = function()
    {
        var self=this;
        var $PhoneContainer = $("#PhoneContainer");
        $PhoneContainer.append("<div id='PhoneScreen'></div>");
        $PhoneContainer.append("<div class='PhoneButton'></div>");
        $('.PhoneButton').click(function(){self.toggleClicked()});

        this.miniMap.init("#PhoneScreen");

        //append the appMenu
        $("#PhoneScreen").append("<div id='AppMenu'></div>");
        $("#AppMenu").hide();
        initMenu();
        //toggleClicked();
    }

    this.toggleClicked = function() 
    {
        console.log(this);
        $('#PhoneContainer').toggleClass ('clicked');
        $('#PhoneScreen').toggleClass ('vertical');
        this.miniMap.toggle();
        $('#AppMenu').toggle();
    }

    this.init();
}

4 个答案:

答案 0 :(得分:2)

How this works

Live Example

var Construct = function() {
  this.magic = 42;
}
var c = new Construct();
alert(c.magic === 42);

答案 1 :(得分:2)

他们正在使用JavaScript的Object Functionality

在此示例中,

SmartPhone本质上是一个类结构,init()是构造(由this.init()中的最后SmartPhone行调用。

this正在引用范围,在这种情况下是正在创建的对象。

答案 2 :(得分:1)

JavaScript中的“this”变量可以指向许多不同的东西,具体取决于您的上下文。有一篇很棒的博客文章称为:Understanding JavaScript’s this keyword

在您显示的上下文中,这将绑定到从SmartPhone构造函数创建的对象。

答案 3 :(得分:0)

这是指SmartPhone对象。例如,this.init定义了SmartPhone的init方法。稍后,您可以使用SmartPhone.init()来访问它。