我正在编写一个 Javascript API 库,它为消费者提供了一个接口,使他们能够与我们的后端 Web 服务进行交互。设想消费者将编写一个 javascript 客户端 Web 应用程序,该应用程序大量使用库提供的 API。
我提出了这种“模式”,用于维护状态并在满足某些条件时使功能“可用”(例如,经过身份验证的用户登录客户端)。
这是实现这一目标的适当方式吗?还是我无意中打破了一些以后会咬我的约定或最佳实践?
// 文件:clientApi.js(库)
ClientObject = function () {
this.objectname = "a client class";
}
ClientObject.prototype.loginUser = function(name) {
this.loggedin = true;
if (typeof this.User === 'undefined') {
this.User = new ClientObject.User(name);
}
}
ClientObject.User = function (name) {
this.username = name;
}
ClientObject.User.prototype.getProfile = function() {
return 'user profile';
}
// 文件:app.js(消费应用程序)
var testClient = new ClientObject();
console.log('testClient.User = ' + (typeof testClient.User)); // should not exist
testClient.loginUser('Bob'); // should login 'bob'
console.log('testClient.User = ' + (typeof testClient.User)); // should exist
console.log(testClient.User.username); // bob
testClient.loginUser('Tom'); // should not do anything
console.log(testClient.User.username); // bob still
console.log(testClient.User.getProfile()); // tada, new functionality available
我的问题:这种方法有效吗?有没有我正在触及的模式可以提供更好的解释或实现我的最终目标的方法?
我在这里问了一个与其他问题类似的问题,不幸的是,上面的代码在噪音中有些迷失:Javascript:从已经实例化的对象与原型创建对象