Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个JavaScript语法我没有';直到现在我才看到,它到底有什么作用?_Javascript_Function_Syntax_Operators - Fatal编程技术网

这个JavaScript语法我没有';直到现在我才看到,它到底有什么作用?

这个JavaScript语法我没有';直到现在我才看到,它到底有什么作用?,javascript,function,syntax,operators,Javascript,Function,Syntax,Operators,今天我看到了一个JavaScript语法(调用函数时),这对我来说是陌生的。就像: def('Person') ({ init: function(name) {this.name=name;} ,speak: function(text) {alert(text || 'Hi, my name is ' + this.name);} }); ,及 1:调用def('Person')返回一个函数,该函数以对象作为参数调用。这与以下原则相同: function x() { retur

今天我看到了一个JavaScript语法(调用函数时),这对我来说是陌生的。就像:

def('Person') ({
  init: function(name) {this.name=name;}
  ,speak: function(text) {alert(text || 'Hi, my name is ' + this.name);}
});
,及

1:调用
def('Person')
返回一个函数,该函数以对象作为参数调用。这与以下原则相同:

function x() {
  return function(y) { alert(y); }
}

x()('Hello world!');

2:这个
哇,这个问题让我小小的大脑很难理解,但现在知道它是如何工作的,我感觉好多了:)多亏@Tim指出了
valueOf()
诀窍

使用以下方法创建
“类”
的一般情况:

def ("ClassName") ({
    init: function() { .. },
    foo: function() { .. }
});
很简单,因为对
def
的第一次调用返回一个函数,该函数接受一个对象,并将传入对象的属性复制到
ClassName
的原型


当然,更有趣的是使用
Ah。整洁的谢谢但是接线员的事情呢?@npup:我对接线员的事情没有任何意义。操作员(他的基本用法对我来说并不陌生):是的,它看起来真的很奇怪。也许它变成了一个no-op,在这里只是用来让子类声明看起来像某种方式?呵呵。谢谢你的回答!返回的对象定义了函数
valueOf
,在对象上执行左移位时调用该函数。显然,@Guffa:这段代码看起来确实是一个非常极端的操作员滥用案例……诚然,我希望我在其他任何地方都看不到它,呵呵,但我相信这是一厢情愿的想法。原始代码似乎是Tobias Schneiders
function x() {
  return function(y) { alert(y); }
}

x()('Hello world!');
def ("ClassName") ({
    init: function() { .. },
    foo: function() { .. }
});
def("ClassName") << ParentClass({ .. })
class Child < Parent
    def someMethod
        ...
    end
end