gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:56:42 26 4
gpt4 key购买 nike

目标:我试图通过使用“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com