「コンストラクター」という用語は(@RobGが指摘したように)定義されていますが、「コンストラクター」以外のオブジェクトがメソッドを持つことを妨げるものは何もありません[[Construct]]
。
これは少し紛らわしいです。これは、( 4.3.4の「コンストラクター」ではない)オブジェクトではなく、
実際にメソッドを提供するnew
オブジェクトで演算子を使用できることを意味します。Function
[[Construct]]
標準オブジェクトはどれもその資格がありませんが、ホストオブジェクトは確かにそうかもしれないことに注意してください。Javaなどのブラウザプラグインは、次のようなオブジェクトを公開する可能性があります。
new java.lang.String(); // it works, so java.lang.String has a [[Construct]] method
java.lang.String instanceof Function // false
Object.prototype.toString.call(java.lang.String).indexOf('Function') // -1
関数ではありませんが、がtypeof java.lang.String
返されることに注意してください。これは11.4.3によると正しいです(これはメソッドを持つホストオブジェクトです)"function"
java.lang.String
[[Call]]