Javascript 为什么函数不';在构造函数中声明时是否不使用new关键字?

Javascript 为什么函数不';在构造函数中声明时是否不使用new关键字?,javascript,function,constructor,declaration,new-operator,Javascript,Function,Constructor,Declaration,New Operator,函数中的函数声明示例: function Rectangle(height, width) { this.height = height; this.width = width; this.calcArea = function() { return this.height * this.width; }; // put our perimeter function here! this.calcPerimeter = function() { ret

函数中的函数声明示例:

function Rectangle(height, width) {
  this.height = height;
  this.width = width;
  this.calcArea = function() {
      return this.height * this.width;
  };
  // put our perimeter function here!
  this.calcPerimeter = function() {
    return 2 * this.height + 2 * this.width;
};
新函数声明示例:

var actions = new function() {
    console.log("this is to do something");
}


为什么我们在声明新函数时使用new关键字,而在构造函数中声明时不使用new关键字???

new
是一个运算符。它分配一个对象实例(并为其分配一个原型)。您创建的函数不是任何类的实例,也不会在多个副本中创建。静态声明定义了将存在的唯一实例。

new
是一个运算符。它分配一个对象实例(并为其分配一个原型)。您创建的函数不是任何类的实例,也不会在多个副本中创建。静态声明定义了将存在的唯一实例。

actions
在这里没有声明为函数。
new
关键字没有执行您在该语句中认为的操作。您在哪里看到
var actions=new function(){…}
?。这不是您所想的<代码>操作未在此处声明为函数。
new
关键字未按您在该语句中的想法执行。您在哪里看到了
var actions=new function(){…}
?。这不是您所想的。。函数是
函数
类的实例,它们是在每个函数定义上创建的。不确定这里的“静态声明”是什么意思。函数不是动态分配的——它们是通过声明创建的。(至少,它们不会比任何
var
更动态地分配。)您不会创建
函数calcPerimiter
来执行程序中的某些任务,然后创建27个不同的calcPerimiter对象。只有一个。它只占用一块内存。如果您要以某种方式制作它的27个单独副本,那么
new
关键字将是合适的。计算的每个
function
表达式都实例化一个新的函数实例。函数的代码可能只存在一次,但每次计算表达式时肯定会创建一个新的函数对象多次,函数对象仍然只有一个实例。指定给成员的表达式是保持不变的引用。表达式不创建函数。它只指单个实例,它是静态的——编译的产物,而不是求值的产物。每个函数都是函数构造函数的实例。函数是
函数
类的实例,它们是在每个函数定义上创建的。不确定这里的“静态声明”是什么意思。函数不是动态分配的——它们是通过声明创建的。(至少,它们不会比任何
var
更动态地分配。)您不会创建
函数calcPerimiter
来执行程序中的某些任务,然后创建27个不同的calcPerimiter对象。只有一个。它只占用一块内存。如果您要以某种方式制作它的27个单独副本,那么
new
关键字将是合适的。计算的每个
function
表达式都实例化一个新的函数实例。函数的代码可能只存在一次,但每次计算表达式时肯定会创建一个新的函数对象多次,函数对象仍然只有一个实例。指定给成员的表达式是保持不变的引用。表达式不创建函数。它只引用单个实例,它是静态的——编译的产物,而不是求值的产物。每个函数都是函数构造函数的实例。