gpt4 book ai didi

javascript - 从同一对象内的另一个函数引用对象内的函数。 JavaScript 对象字面形式

转载 作者:行者123 更新时间:2023-11-28 14:26:06 24 4
gpt4 key购买 nike

在下面的代码中,当我尝试从 ArrayRotation 对象中的 userInputOn 函数内部调用 promptUpdater 函数时,我得到一个 类型错误:无法读取未定义的属性提示更新器。

我猜,这是代码的最后一行rotationTaskObj.userInputOn();,我需要在其中纠正引用,但我无法做到这一点。

'use strict';

var ArrayRotation = {
arr : [],

promptUpdater : function() {
//code
},

userInputOn : function() {
return new Promise(function(resolve, reject) {
this.promptUpdater(); //correct way to reference promptUpdater fn?
});
},
}

let rotationTaskObj = Object.create(ArrayRotation);

let userInputPr = rotationTaskObj.userInputOn(); //My guess, I need to create correct refernce here, not able to get how to do that?

引用promptUpdater函数的正确方法是什么?

最佳答案

您的问题是您尝试调用 this.promptUpdater() 的位置, this不是你想的那样。 this作用域为当前函数,即您的 function(resolve, reject) ,不是你的对象。

传统函数方法 .bind

如果你不想使用箭头函数(你应该,但我不会判断:-)),你可以设置函数的 this使用 bind() 的值方法:

更改userInputOn将它的 this 绑定(bind)到它的父项 this :

   userInputOn : function() {
return new Promise(function(resolve, reject) {
this.promptUpdater(); //correct way to reference promptUpdater fn?
}.bind(this));
},

箭头函数法

改变

 return new Promise(function(resolve, reject) {

 return new Promise((resolve, reject) => {

箭头函数没有 this与普通函数一样,它们会获取 this来自托管功能。

这是一个 fiddle :“https://jsfiddle.net/jmbldwn/fpa9xzw0/5/

关于javascript - 从同一对象内的另一个函数引用对象内的函数。 JavaScript 对象字面形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53167127/

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