小编mar*_*igo的帖子

javascript中的getter和setter

我开始使用javascript,特别是使用OOP模式.

我的问题很简单.在setter中,有没有办法为参数和私有类变量保留相同的名称?我到处寻找,但找不到任何人提到它,只是具有不同var名称的例子.我对我的代码非常挑剔,我不得不给它两个不同的名字.

以http://ejohn.org/blog/javascript-getters-and-setters/为例

function Field(val){
    this.value = val;
}
Field.prototype = {
    get value(){
        return this._value;
    },
    set value(val){
        this._value = val;
    }
};
Run Code Online (Sandbox Code Playgroud)

你可以在setter中看到参数是val,但属性实际上是value.因为它是javascript我不能简单地这样做.value = value因为"this"会使它公开.value = value将引用参数(并且会非常奇怪).真的没办法做到这一点吗?如果没有,这种情况有没有"最佳做法"?我想下划线可能是有效的,但我只是挑剔所以只是想确保没有别的办法.

谢谢!

javascript oop getter-setter

5
推荐指数
1
解决办法
5686
查看次数

检查 activerecord 是否锁定在“更新”状态

假设我有以下实体和关系:

A<-B<-C<-D<-E
Run Code Online (Sandbox Code Playgroud)

对于同一个 A,我有很多 E(E 属于 A 到 D、C 和 B)

我有一个看起来像这样的代码片段:

eList=E.all
varA=eList.first.D.C.B.A

E.transaction do
  ...Operations that take some time...

  varA.update_attributes(::last_update=>Time.now)
end
Run Code Online (Sandbox Code Playgroud)

现在想想这个片段是用线程运行的。每个 E 实体一个线程。这意味着如果我有一个 A 的 10 个 E,那么这个代码段将同时运行 10 个线程。

我的问题与线路有关

varA.update_attributes(:last_update=>Time.now)
Run Code Online (Sandbox Code Playgroud)

当我查看我的代码时,我发现我有这个:

[DEBUG] 2013/02/13 13:09:51 [66222] - abstract_adapter.rb:198 -   A Update (3107.1ms)   UPDATE "A" SET "updated_at" = '2013-02-13 13:09:47.932899', "last_update" = '2013-02-13 13:09:47.932209' WHERE "id" = 144
[DEBUG] 2013/02/13 13:09:54 [48600] - abstract_adapter.rb:198 -   A Update (6812.2ms)   UPDATE "A" SET "updated_at" = '2013-02-13 13:09:47.218032', "last_update" = …
Run Code Online (Sandbox Code Playgroud)

multithreading locking ruby-on-rails rails-postgresql rails-activerecord

5
推荐指数
1
解决办法
2227
查看次数