首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery:如何从匿名函数内部访问父函数"this“?

jQuery:如何从匿名函数内部访问父函数"this“?
EN

Stack Overflow用户
提问于 2012-02-06 00:06:43
回答 5查看 25.6K关注 0票数 24
代码语言:javascript
复制
...
$.fn.annotateEdit = function(image, note) {
    if (note) {
        this.note = note;
    } else {
        var newNote = new Object();
        newNote.id = "new";
        this.note = newNote;
    }
}
...
var mynote = this.note;

form.find(':radio').change(function() {
    var vacancy = $(this).attr('value');
    mynote.vacancy = vacancy;
});
...

是否可以在不定义"this.note“的情况下从change()处理程序访问"mynote"?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-06 00:09:59

我使用这样的模式,这样我就可以访问封闭作用域中的任何内容:

代码语言:javascript
复制
var that = this;
...

form.find(':radio').change(function () {
    that.note.vacancy = $(this).attr('value');
});

我是这个模式的粉丝,因为它使代码更具可读性。在我看来,很明显,它被访问的内容是封闭作用域的一部分(只要that的使用是一致的)。

票数 49
EN

Stack Overflow用户

发布于 2012-02-06 00:14:06

使用$.proxy将其绑定到函数...

代码语言:javascript
复制
   // Returns a function-------v
form.find(':radio').change( $.proxy(function() {

    var vacancy = $(this).attr('value');
    mynote.vacancy = vacancy;

}, this) );
//   ^---- ...that has its "this" value set as this argument.
票数 5
EN

Stack Overflow用户

发布于 2012-02-06 00:13:13

它没有专门的语言机制。常见的模式是将闭包存储在外部函数的本地( this )变量(通常名为selfthat)中:

代码语言:javascript
复制
var self = this;
var innerFunction = function() {
    self.x = 1;
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9150676

复制
相关文章

相似问题

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