小编Max*_*eng的帖子

如何在EcmaScript 5中添加静态成员

我想在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样式对象创建时,如何向类中添加静态成员?

javascript ecmascript-5

7
推荐指数
2
解决办法
2244
查看次数

Getter中的异步函数w /回调中的返回

我想定义一个只读对象属性,该属性异步获取一个值,然后使用新的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.

javascript v8 node.js ecmascript-5

7
推荐指数
1
解决办法
4337
查看次数

如何让所有GitLab用户无需公开回购,即可访问所有存储库?

我们是一个小团队(大约20人),我希望每个人都可以访问所有存储库,但不会公开它们.

有没有办法让每个用户都可以访问所有存储库而不公开它们?或者他们至少可以看到/浏览所有的回购?

到目前为止,我的方法是创建一个名为"Everyone"的团队,并将其手动添加到所有存储库中.但我希望这可以自动发生,而且不会让每个人都像团队一样出现.

任何想法高度赞赏.谢谢

git version-control gitlab

6
推荐指数
2
解决办法
6830
查看次数

标签 统计

ecmascript-5 ×2

javascript ×2

git ×1

gitlab ×1

node.js ×1

v8 ×1

version-control ×1