jquery - 如何用这个调用调用者命名空间的函数?

标签 jquery function namespaces

目标:我试图通过使用“this”而不是命名空间字符串来缩短在函数中调用相同命名空间的函数的方式。但显然“this”不适用于函数,它只适用于变量。我想知道这是由于我的误用,还是使用命名空间字符串调用函数是唯一的方法。

另一个初学者的问题:我正在调用与调用者命名空间相同的函数。我用谷歌搜索,有人打电话说: this.myfunction 可以工作,但没有。有任何想法吗?谢谢。

我打电话:
singleEntry.editContent.accept(tinyMCE.get('editContentTa').getContent());

从:
index.fragment.singleEntry.editContent.load

我试图这样做:this.accept,但 Firebug 说 this.accept 不是一个函数......

  index.fragment.singleEntry.editContent.load = (function(singleEntry) {
return function() {
    // prepare edit dialog
    $("#editContentDiv").dialog({
        autoOpen : false,
        height : 500,
        width : 600,
        modal : true,
        buttons : {
            "OK" : function() {
                singleEntry.editContent.accept(tinyMCE.get('editContentTa').getContent());
                $(this).dialog("close");
            },
            "CANCEL" : function() {
                $(this).dialog("close");
            }
        },
        open : function() {
            // set value to the edit area
            tinyMCE.get("editContentTa").setContent($("#veContent").html());
        }
    });

最佳答案

我并没有完全遵循您的最终目标,因此一些理论希望可以帮助您实现目标:

当您通过对象的属性调用函数时(因此,通过点分符号或 [] 符号),this在函数调用中将是对象引用。所以当你打电话

singleEntry.editContent.accept(tinyMCE.get('editContentTa').getContent());

...在那次通话中,this将引用singleEntry.editContent .

如果你想要 this要引用其他内容,您可以使用 call :
singleEntry.editContent.accept.call(thisObj, tinyMCE.get('editContentTa').getContent());
//                            ^^^^^^^^^^^^^

...哪里thisObj是您希望函数将其视为 this 的任何对象在通话过程中。更多信息:Mythical methods
call是所有(真实)JavaScript 函数的一个属性,专门提供以方便调用函数和设置内容 this在通话期间应该是(上下文是什么)。还有apply ,它做完全相同的事情,但接受作为数组而不是离散参数传递给函数的参数。例如,这两个调用是相同的:
// Using `call`
singleEntry.editContent.accept.call(thisObj, tinyMCE.get('editContentTa').getContent());

// Using `apply`
singleEntry.editContent.accept.call(thisObj, [tinyMCE.get('editContentTa').getContent()]);
//                        Note the `[]` -----^

所有这一切都成为可能,因为在 JavaScript 中,this完全取决于函数的调用方式,而不是它的定义位置——我想你知道,根据你的问题,但无论如何值得标记。

关于jquery - 如何用这个调用调用者命名空间的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961349/

相关文章:

c++ 标准两个不同的声明

c++ - C++ 中的命名空间类模板继承

xml - 我的 XPath/XML 有什么问题?

javascript - 根据下拉值更改表单字段

javascript - 显示/隐藏故障 - 有人可以指出我的错误吗?

jquery - bxslider无限循环向左滚动到第一张幻灯片而不是向右循环

c - 使用函数更改指针包含的地址

php - Laravel 涉及命名空间

javascript - 相同的子任务在 Angular 甘特图中显示为里程碑

javascript - JQplot barRenderer "y-axis"值从负值开始