谁能解释这个简单的Javascript行为?

时间:2011-03-23 11:28:17

标签: javascript

function cat() {

    this.Execute = new function() {

            alert('meow');

    }

}

var kitty = new cat();

http://jsfiddle.net/PaDxk/1/

为什么这样做?我没有告诉它运行该功能。

3 个答案:

答案 0 :(得分:8)

当您编写new function() { ... }时,您正在创建一个匿名函数,然后立即在new表达式中调用它。
此表达式的结果是一个对象 - 由匿名函数创建的类的实例

相当于

var anonymous = function() { ... };
this.Execute = new anonymous;

答案 1 :(得分:4)

带有警报的匿名函数用作构造函数(因为new)。 this.Execute然后成为此函数对象的“实例”。

答案 2 :(得分:3)

由于使用了“新”。

如果您只想分配函数并稍后调用它,那么您需要像这样使用它:

function cat() {

    this.Execute =  function() {  
            alert('meow');    
    }    
}

var kitty = new cat();
kitty.Execute(); 

当你在这个上下文中使用new时,你的函数就好像它是构造函数一样......