gpt4 book ai didi

javascript - 将上下文传递给内部函数

转载 作者:行者123 更新时间:2023-11-30 12:06:57 25 4
gpt4 key购买 nike

代码如下:

function link(scope, element, attrs, formCtrl) {
element.tooltipster({
content: '',
theme: 'validation-notify',
arrowColor: '#d9534f',
contentAsHTML: true,
functionBefore: generateContent
});
}

function generateContent() {
var formField = formCtrl[element];
var i = 0;
}

上面的代码被破坏了,因为 formCtrl 和元素在 generateContent 中不可用。现在,我意识到我可以使用:

functionBefore: generateContent.bind({formCtrl: formCtrl, element: element})

然后在 generateContent 中我可以引用它们

this.element

我也可以只在链接内声明 generateContent。有没有更好的方法来做到这一点?就像无论如何都将 generateContent 绑定(bind)到链接中的整个上下文,所以像:

functionBefore: generateContent.bind(this)

(除了在这种情况下 this 是未定义的)?

最佳答案

Like is there anyway of binding generateContent to the entire context within link

不,这些函数是词法范围的,它们会记住创建它们的环境。我们无法访问这些信息,因为它们是特定于实现的。

但是您可以做的是,让generateContent 函数接受它需要的所有参数,然后您可以像这样定义functionBefore

...
functionBefore: generateContent.bind(this, formCtrl, element)
...

function generateContent(formCtrl, element) {
var formField = formCtrl[element];
var i = 0;
}

在这里,generateContent.bind(this, formCtrl, element) 创建了一个新的函数对象,当调用它时,上下文将作为 link 函数的 this 和两个参数 formCtrlelement 默认。

关于javascript - 将上下文传递给内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914063/

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