JavaScript 中的函数与对象以及没有函数的实例化

Functions vs. Objects in JavaScript and the instantiation without function

我知道,JavaScript 中的函数只不过是具有原型 属性 和构造函数的对象,可用于实例化新对象。

但是,无法执行以下操作:

 let Pear = {
    prototype : Object.prototype
 };
 let p = new Pear();  //Throws "caught TypeError: Pear is not a constructor"

在我看来,这应该完全一样:

 function Pear() {

 }
 let p = new Pear();

什么有效。 我只是想知道区别在哪里。我的第一种方法有修复方法吗? 还是 "functions" 没有 "real" 对象并得到区别对待?这真的只是一种好奇心。其实没什么重要的...

new操作的对象必须实现[[Construct]]内部方法,否则会抛出TypeError异常(你观察到的)。

知道这一点后,我认为您不能将 new 与使用对象字面量语法生成的对象结合使用。

但是,如果您要定义类似的东西,您可能不想。您可以使用 Object.assign().

创建一个包含前者属性的新对象
let p = Object.assign({}, Pear);

或者,您可以使用另一种方法将对象的原型更改为其他内容。