gpt4 book ai didi

javascript - 原型(prototype)为闭包对象

转载 作者:行者123 更新时间:2023-12-03 04:43:16 25 4
gpt4 key购买 nike

因此,作为工作要求,我们的代码不能大于 80 列和 250 行。这意味着我必须返回并将代码分解成更小的文件,并且我正在探索一些选项。首先想到的是使用 JavaScript 进行原型(prototype)设计,因为我无法安装 RequireJS。其次,我的应用程序使用闭包。我的问题是:你能将原型(prototype)变成闭包吗?下面的例子。

File #1

var app = (function () {
var _userName = "Steve";
function sayHello() {
return "Hello " + _userName;
}
return {
sayHello: sayHello
}
})();

File #2

app.prototype.sayGoodbye = function() {
return "Goodbye " + _userName;
};

Output

app.sayHello(); // should output "Hello Steve"
app.sayGoodbye(); // should output "Goodbye Steve"

但是这似乎不起作用,因为 sayGoodbye() 函数未包含在闭包中。但是,如果告诉 sayHello() 函数使用 sayGoodbye(),这也不起作用。关于如何跨多个文件构建闭包对象有什么建议吗?谢谢!

最佳答案

您可以像这样更改您的闭包函数,这是一个看起来更像闭包函数

var app = (function() {

// This is your constructor
function app() {
this._userName = "Steve";
}

function hello() {
return "Hello " + this._userName;
}

// This is made to do the above function hello() public
app.prototype.sayHello = function() {
return hello.call(this);
}

// Here we return the app object to be able to do a prototype
return app;
})();

// Here we do our prototype
app.prototype.sayGoodbye = function() {
return "Goodbye " + this._userName;
}

// Here we create an instance
var a = new app();

console.log(a.sayHello()); // should output "Hello Steve"
console.log(a.sayGoodbye()); // should output "Goodbye Steve"

关于javascript - 原型(prototype)为闭包对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42988051/

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