function init() {
var name = "Breaking Bad";
function getName() {
console.log(name);
}
function setName(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
}
const sayMyName = init().getName; // during initialization
init().setName('Heisenberg'); // can be updated multiple times later
sayMyName(); // isn't latest i.e. NOT Heisenberg

可以做些什么才能使getName
获得最新的name
?
答案 0 :(得分:8)
PS:我试过了,但之后无法在stackoverflow上找到解决方案 阅读关于内部函数,闭包等的许多答案。
因为当你做到了
init().setName('Heisenberg');
您最终将名称设置为init()
的其他引用,因为每次您调用init
时,它都会返回getName
和setName
的不同引用。
成功
function init() {
var name = "Breaking Bad";
function getName() {
console.log(name);
}
function setName(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
}
var init1 = init(); //save the initialization
var sayMyName = init1.getName;
init1.setName('Heisenberg'); // can be updated multiple times later
sayMyName();