可能重复:
Javascript syntax I haven't seen till now, what does it do really?
我正在检查一个名为def.js的库,它使JavaScript对象以类似于Ruby的方式继承。但我无法得到的是在提供的示例中使用JavaScript的方式:
def ("Person") ({
init: function(name){
this.name = name;
},
speak: function(text){
alert(text || "Hi, my name is " + this.name);
}
});
def ("Ninja") << Person ({
init: function(name){
this._super();
},
kick: function(){
this.speak("I kick u!");
}
});
var ninjy = new Ninja("JDD");
ninjy.speak();
ninjy.kick();
总之,这两点是:
这是JavaScript的正确/合法使用吗?如果是,那是什么意思,即浏览器如何解释。
答案 0 :(得分:2)
def("Person")({...});
基本上是链式函数调用。这意味着:
"Person"
传递给函数调用def()
。def()
返回一个可以调用的函数。{...}
作为参数传递给def()
返回的函数。不确定<<
运算符,因为之前我没有在JS中遇到它。我认为这是左移位运算符,但我不知道它如何应用于函数。