我想在EcmaScript 5 JavaScript中为类添加静态函数.我的类定义如下:
var Account = {};
Object.defineProperty(Account, 'id', {
value : null
});
Run Code Online (Sandbox Code Playgroud)
我会创建一个这样的新实例:
var theAccount = Object.create(Account);
theAccount.id = 123456;
Run Code Online (Sandbox Code Playgroud)
现在我想在Account
类中添加一个静态函数.如果我Account
使用构造函数和prototype
类似的属性创建了类:
var Account = function () {
this.id = null;
};
Run Code Online (Sandbox Code Playgroud)
......我可以这样做:
Account.instances = {};
Account.createInstance = function () {
var account = new Account();
account.id = uuid.v4();
Account.instances[account.id] = account;
return account;
};
Run Code Online (Sandbox Code Playgroud)
但是因为我正在使用Object.defineProperty
而不是prototype
添加成员的属性,Account.instances
并且Account.createInstance
在调用时也会被实例化Object.create
,因此是实例的属性.
在使用EcmaScript 5样式对象创建时,如何向类中添加静态成员?
我想定义一个只读对象属性,该属性异步获取一个值,然后使用新的EcmaScript 5 getter返回它.
但是,undefined
即使magicValue
在下面的示例代码中明确地永远不会定义,属性也会始终返回.另外,当我只是return 'xxx';
打印值仍然是undefined
.它仅在我return
在回调函数之外时才有效.
return
无论是否调用回调,似乎都会立即执行myAsyncFunction
.我不确定这是V8中的错误,还是我滥用JavaScript的getter.
我可以让这个工作吗?我想,既然我现在可以使用getter和setter,我将使用getter/setter来读写属性和常规函数来完成某些任务.
var User = function (id) {
this.id = id;
};
Object.defineProperty(User.prototype, 'magic', {
get : function () {
myAsyncFunction(function (magicValue) {
return magicValue;
});
}
});
var u = new User(5);
console.log(u.magic);
Run Code Online (Sandbox Code Playgroud)
打印undefined
.
我们是一个小团队(大约20人),我希望每个人都可以访问所有存储库,但不会公开它们.
有没有办法让每个用户都可以访问所有存储库而不公开它们?或者他们至少可以看到/浏览所有的回购?
到目前为止,我的方法是创建一个名为"Everyone"的团队,并将其手动添加到所有存储库中.但我希望这可以自动发生,而且不会让每个人都像团队一样出现.
任何想法高度赞赏.谢谢