2

可能的重复:
到目前为止我还没有看到 Javascript 语法,它到底有什么作用?

我正在检查一个名为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();

简而言之,有两点:

  1. def ("人")({}); // 函数调用后的括号
  2. def ("忍者") << 人 ({}); // 两个由操作符分隔的函数调用 <<

这是对 JavaScript 的正确/合法使用吗?如果是,它的含义是什么,即浏览器如何解释。

4

1 回答 1

2
def("Person")({...});

基本上是链式函数调用。它的意思是:

  1. 将字符串传递"Person"给函数调用def()
  2. def()返回一个可以调用的函数。
  3. 将对象{...}作为参数传递给由 . 返回的函数def()

不确定<<运算符,因为我以前在 JS 中没有遇到过。我认为它是左移位运算符,但我不知道它如何应用于函数。

于 2010-12-25T07:56:06.650 回答