首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery方法中对象文本的访问属性

jQuery方法中对象文本的访问属性
EN

Stack Overflow用户
提问于 2014-01-09 18:36:42
回答 4查看 1.1K关注 0票数 1

我有一个对象文字,如下所示。在Init方法中,我为单击事件设置了一个处理程序。稍后,当调用处理程序时,我希望使用this关键字访问this属性。在这一点上,this具有jQuery的含义。

另外,为了明确起见,我不希望实现与选择器一致的函数。

代码语言:javascript
运行
复制
var StackOver = {

    Bar: "MyBarValue",

    Init: function(){
        $("#postId").click(this.Foo);
    },

    Foo: function(eventObject){
        // here **this** is jQuery keyword
        // how do I access StackOver.Bar?
    }
}

如何在Foo中访问此对象文字的属性

如果我使用构造函数文字,这可能会很容易,这对我来说不是一件容易的事:

代码语言:javascript
运行
复制
var StackOver = function (){
    var self = this;

    function bar()
    {
        // I can use self here
    }
}

编辑我忘了在这个对象文字中使用显示模块模式,它对对象隐藏私有属性。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-09 18:40:08

一种选择:

代码语言:javascript
运行
复制
Init: function(){
    $("#postId").click(this.Foo.bind(this));
}

另一种选择:(来自http://api.jquery.com/jquery.proxy/)

代码语言:javascript
运行
复制
Init: function(){
    $("#postId").click($.proxy(this.Foo, this));
}

this都使用变量,因此不能将this用于其他目的。

但是,如果不能使用this**:**,则

代码语言:javascript
运行
复制
Init: function(){
    $("#postId").click(function (self) {
        return function (event) {
            return self.Foo(self, event);
        }
    }(this));
}

在Foo中,只需添加self参数。

代码语言:javascript
运行
复制
Foo: function (self, event...) {
  ...
}

所有这些都说明,为什么不能使用(function () {var self = this; ... }())呢?毕竟,是的显示模块模式。

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 18:42:02

其他人都建议使用.bind,这是有意义的,但您也可以在闭包中引用对象本身:

代码语言:javascript
运行
复制
Foo: function(eventObject) {
    console.log(StackOver.Bar);
}
票数 3
EN

Stack Overflow用户

发布于 2014-01-09 18:40:47

代码语言:javascript
运行
复制
var StackOver = {
    /*...*/
    Init: function(){
        $("#postId").click(this.Foo.bind(this));
    },
    /*...*/
    Foo: function(eventObject){
        // here **this** was actually the html element
        // now it's the old this.
        alert(this.Bar);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21028414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档