这是我的清单清单()函数的调用方式,我无法更改它。
if (operationInfo[0] === 'add') {
inventoryList().add(operationInfo[1]);
但是我的清单清单函数内部有一个方法,如下所示,但它指出obj.add不是函数!为什么?
function inventoryList(){
const add = (name) => {
// adds string to inv and if item exists doesn't add. Adds to log also as objects maintain no position
if(!(name in inv)){
inv[name] = name;
entries.push(name)
}
};
}
答案 0 :(得分:2)
要使用add
函数,请从inventoryList
函数返回。
function inventoryList() {
const add = (name) => {
if (!(name in inv)) {
inv[name] = name;
entries.push(name)
}
};
return { add };
}
考虑到这一点,建议您将inventoryList
更改为以add
作为方法的类。
class InventoryList {
add(name) {
if (!(name in inv)) {
inv[name] = name;
entries.push(name)
}
}
}
您可以像这样使用它
const invList = new InventoryList();
if (operationInfo[0] === 'add') {
invList.add(operationInfo[1]);
}
答案 1 :(得分:0)
inventoryList
未返回任何内容。返回一个对象,该对象包含对要执行的函数的引用。另外,_add
是inventoryList
专有的内部函数,因此必须公开它才能使用
function execute() {
inventoryList().add('hello')
}
function inventoryList() {
const _add = (name) => {
console.log(name)
// rest of code
};
return {
add: _add,
// add other function if it is there
}
}
<button onclick='execute()'>Execute</button>