Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
是因为尝试将不是构造器的对象或者变量来作为构造器使用。参考 constructor 或者 new operator 来了解什么是构造器。
有很多的全局对象比如 String、Array 等等都是可以使用 new 操作符的构造器。但是有一些全局对象并不是,且其属性和方法都是静态 的。下面的 JavaScript 标准内置对象都不是构造器:Math,JSON,Symbol,Reflect,Intl,SIMD,Atomics。
Generator functions 也不能作为构造器来使用。
假设你想为汽车创建一个对象类型。你希望此类型的对象被称为 car,并且你希望它具有 make,model 和 year 属性。为此,你编写以下函数:
现在你可以创建一个名为 mycar 的对象,如下所示:
当返回了一个 immediately-resolved 或者 immediately-rejected Promise 的时候,你根本不需要去创建、操作一个新的 Promise 对象。
这是不合法的(Promise constructor 被错误的调用了)且会抛出一个 错误 TypeError: this is not a constructor exception:
使用 Promise.resolve() 或者 Promise.reject() 静态方法来代替: