gpt4 book ai didi

javascript - JS 闭包将对象实例作为接口(interface)返回

转载 作者:行者123 更新时间:2023-12-03 02:28:52 26 4
gpt4 key购买 nike

我有以下代码。

function Test() {
this.funct_1 = function() {
alert('funct_1');
}

this.funct_2 = function() {
alert('funct_2');
}
return this;}
<小时/>
function getTestObj() {
var testObj;
if (!testObj) {
testObj = new Test();
}
return function() {
return testObj;
}}

我想要完成的任务如下。我想要一个不是单例的类Test。然后,在我的应用程序的其他一些地方,我需要一个可以在每次脚本执行时返回相同实例的函数。我想我可以对 getTestObj 使用闭包。

但是,当我尝试使用它时

getTestObj().funct_1();

我收到以下错误,提示找不到 funct_1()

在对象函数 () {...} 中找不到函数 funct_1。

显然,我在这里犯了一些错误,但我无法在网上找到任何可以帮助我的解决方案。如有任何意见,将不胜感激。

注意:我被迫使用 ECMA5

最佳答案

testObj 包装在 function

所以,要么调用它

getTestObj()().funct_1(); //notice two ()()

getTestObj() 的值保存在变量中

var singleTon = getTestObj();
var testObj = singleTon();
testObj.funct_1();

或者,只需返回 testObj(如果不需要 singleTon)

function getTestObj() 
{
var testObj;
if (!testObj) {
testObj = new Test();
}
return testObj;
}

并将其调用为

getTestObj().funct_1(); //notice single ()

关于javascript - JS 闭包将对象实例作为接口(interface)返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48826158/

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