最近学学 backbone 吧,看源码看到了类似于这样的写法
var events = this._events[name] || (this._events[name] = []);
内心惶恐了,这个语法方式从来没用过,我突然发现自己似乎不懂 js 的语法啊,虽然平时也用 jquery 写一些,但从没遇到这样的写法。 求大神们指点一下,我该从哪里补习?
#3 楼 @lgn21st 哇,吕哥出来了,我知道你有研究过,哈哈。找到救命大船了。这个就是 backbone 源码里的一句,我主要是不熟悉这样的写法(虽然知道它的意思,但是要我自己在代码里写,就不敢写了). 我贴的稍微全点
var Events = Backbone.Events = {
// Bind an event to a `callback` function. Passing `"all"` will bind
// the callback to all events fired.
on: function(name, callback, context) {
if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
this._events || (this._events = {});
var events = this._events[name] || (this._events[name] = []);
events.push({callback: callback, context: context, ctx: context || this});
return this;
},
这行代码其实不难理解,this._events
是一个全局变量,用名字去存储所有的注册的 event 的 callback。
比如给某个用户 event 比如 click
绑定了三个 callback, 那么这三个 callback 就以数组的形式保存,于是
this._events['click'] = [callback1, callback2, callback3];
events = this._events['click']
events #=> [callback1, callback2, callback3]
上面你贴出来的代码都是初始化代码,确保 this._events
是一个对象,本地变量 events
是一个数组。
#5 楼 @u1378130755 真得啊,我居然还说过这种事情..... 不过我用过的 javascript 框架和库,我基本上都会通读代码,有一定深度理解才能用好。(angularjs 除外,读起来有点 hold 不住 )
#13 楼 @u1378130755 写多了,这种风格的代码由自己手写出来就很自然的事情了,光看是没有用的,每个自己学到的小知识,都配合一段代码去验证一下,你就真的掌握了。
image : first.isImage && first.image,
我写过这种,达到目的了,但不知道这样做好吗。。。
我重构的时候想到的,嘿嘿
#12 楼 @u1378130755 3 年前我做 java 外包的时候 就已经大量用短路啊 匿名内部类啊 动态生成类啊之类的比较“危险”的写法了 也许你现在的 java 项目太保守了吧 不管怎样希望楼主加油哈 早日转到 ruby 你会解脱并且豁然开朗的