我开始使用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将引用参数(并且会非常奇怪).真的没办法做到这一点吗?如果没有,这种情况有没有"最佳做法"?我想下划线可能是有效的,但我只是挑剔所以只是想确保没有别的办法.
谢谢!
假设我有以下实体和关系:
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