Javascript 使用java脚本中的方法访问对象中的布尔值

Javascript 使用java脚本中的方法访问对象中的布尔值,javascript,methods,factory,Javascript,Methods,Factory,我正在创建一个工厂,并尝试将一些方法应用到其中。我正在使用simple console.log进行测试。记录字符串的方法(logTitle)有效,而引用布尔值的方法(logcompleted)(稍后我想用更新的方法更改它,该方法将completed从true切换到false并返回)无效。我在代码中得到了“arrayFunctions.js:20 uncaughtreferenceError:Completated is not defined”注释以突出问题。提前谢谢 const todoFac

我正在创建一个工厂,并尝试将一些方法应用到其中。我正在使用simple console.log进行测试。记录字符串的方法(logTitle)有效,而引用布尔值的方法(logcompleted)(稍后我想用更新的方法更改它,该方法将completed从true切换到false并返回)无效。我在代码中得到了“arrayFunctions.js:20 uncaughtreferenceError:Completated is not defined”注释以突出问题。提前谢谢

const todoFactory = (
  title,
  project = "",
  dueDate = "",
  priority = "",
  notes = ""
) => {
 
  return {
    title,
    project,
    dueDate,
    priority,
    notes,
    compleated: false,
    logTitle: () => console.log(title), //works
    logCompleated: () => console.log(compleated), //arrayFunctions.js:20 Uncaught ReferenceError: compleated is not defined
  };
};

标题
可能会误导您。该函数即使用作TODO对象的方法,也不会引用所创建对象的
title
属性。相反,它指的是工厂函数的参数。您可以通过执行类似于
返回{title:title+'foobar',project,…}
的操作来检查这一点。调用
myTodo.logTitle()
时,将只记录作为参数提供的值

您可以通过在
返回
之前添加
completed
(注意:通常的英语拼写为“completed”)作为局部变量来解决此问题

const todoFactory=(
标题
项目=”,
截止日期=”,
优先级=”,
notes=“”
) => {
返回{
标题
项目
决战日期,
优先,
笔记,
完成:错误,
logTitle:()=>console.log(title),
logcompleted:()=>console.log(completed),
};
};
const todo=todoFactory('foo')

todo.LOGCOMPLETED()
使用常规函数,在其内部使用此函数。COMPLETED

使用常规
函数,在其内部使用
此函数。COMPLETED
LOGCOMPLETED:function()=>console.log(this.completed)??不,我说的是使用
function
关键字创建的常规函数,而不是
=>
函数。好的,非常感谢。我让它工作了。你有没有可能给我一个谷歌搜索词或一个我可以去了解我以前做错了什么的页面;-)我的回答试图解释这一点。斯科特,你有什么好的资源可以推荐给我,让我能更好地理解这一点吗?或者只是一个我可以输入的谷歌搜索词。:-)谢谢你的回答@在JS中,这只是一个简单的问题。返回的对象引用了包含factory函数中的参数和局部变量的。您还可以了解到,它们没有自己的绑定到此