这是一个非常基本的问题,但我有点困惑。我的理解是约定规定类定义是大写的,但对象实例不是。所以当我做以下事情时:
App = require("app");
module.exports = App.AuthManager = Ember.Object.extend({
apiKey: null,
// Load the current user if the cookies exist and is valid
init: function() {
this._super();
var accessToken = $.cookie('access_token');
var authUserId = $.cookie('auth_user');
if (!Ember.isEmpty(accessToken) && !Ember.isEmpty(authUserId)) {
this.authenticate(accessToken, authUserId);
}
},
// ...
}
我假设我只定义了AuthManager的类定义。如果我这样做:
module.exports = App.ApplicationRoute = Ember.Route.extend({
init: function() {
this._super();
App.AuthManager = App.AuthManager.create();
}
});
我的理解是App.AuthManager = App.AuthManager.create();
实例化实例,并且ApplicationRouter几乎是在ember应用程序中执行的第一件事。是对的吗?如果是这样,那么惯例是否应该规定实例被称为authManager
?此外,通常将类定义放在与对象相同的名称空间中吗?我怀疑这可能归结为我对JS的相对浅薄的理解,但任何帮助都会受到赞赏。
答案 0 :(得分:0)
如果是这样,那么不应该约定实例被称为authManager吗?
是的,这一行:
App.AuthManager = App.AuthManager.create();
应该阅读,主要是为了避免混淆(虽然它是单身人士,而单身人士也可以大写)
App.authManager = App.AuthManager.create();
因为你正在创建App.AuthManager
类定义的实例,所以这至少是ember如何指示它。
此外,通常将类定义放在与对象
相同的名称空间中
我猜不是,(但Javascript让你做各种各样的事情)因此是Object实例的小写命名,而不是像类定义那样的大写。所以稍后您可以创建更多相同类的实例,如:
App.foo = App.AuthManager.create();
App.bar = App.AuthManager.create();
(显然这对于一个单身人士来说没有多大意义,但你明白了这一点)
希望有所帮助