提问人:david 提问时间:6/2/2023 最后编辑:Mark Rotteveeldavid 更新时间:6/2/2023 访问量:27
函数上下文与赋值为变量 [duplicate] 的函数不同
Function context is different to function assigned as variable [duplicate]
问:
我看到几个关于回调的问题:显然,这里不涉及回调,我正在努力查看之前任何答案的相关性。我不怀疑有一定的相关性,只是前面的答案都没有解释或证明这种相关性。
需要明确的是:我不知道使用过程变量重命名函数如何改变上下文。如果我正在实现回调,那将是显而易见的,但我不是:我没有通过使用回调移动到对不同对象的调用,而且我不知道新上下文是什么,或者它如何或为什么改变。
我有一个函数:
export default class Popup {
shower(label, value, valueList, saveEvent) {
let classInstance = this;
let domObjects = [ classInstance.dom.text(label, "p") ];
}
}
这样称呼:
export default class Controller {
constructor(model, view) {
this.model = model;
this.view = view;
}
function fred(void){
fn=this.view.popup.shower;
fn(label, stat.value, lst, myOtherfn);
}
..但这行不通。如果失败,因为以这种方式调用时,有一些未定义的内容
classInstance.dom.text(label, "p")
(当从与普通呼叫完全相同的位置调用时,它可以正常工作)
function fred(void){
this.view.popup.shower(label, stat.value, lst, myOtherfn);
}
我对javascript的了解还不够,甚至没有危险。dom.text(“mytext”是什么意思 , “p”) 是什么意思?显然我从两个调用方法中得到了不同的this.dom?我怎样才能以一种不干扰上下文的方式使用可变过程?
答: 暂无答案
评论
this
称为“上下文”,而不是“范围”