构造函数返回除 'this' 以外的值的实例
在 JavaScript 中,当使用 new 关键字调用构造函数时,它通常会返回新创建的对象。但是,在特定情况下,它可以返回不同的值以避免返回此值。
返回其他值的条件
如 ECMA-262 第三版规范中所述[[Construct]] 内部属性(步骤 7),构造函数的返回值 (Result(6)) 决定是否返回。如果 Result(6) 是 不是 对象类型,则将返回它而不是 this。此条件对于构造函数的正确执行至关重要。
示例
考虑以下构造函数:
function Foo() { return 10; // Returning a non-object primitive } var foo = new Foo();
在此示例中,因为10 是一个非对象基元,它将作为 Foo() 构造函数的结果返回。因此, foo 将被分配原始值 10,并且 (new Foo() instanceof Foo) 将计算为 false,因为 foo 是原始类型。
摘要
总之,只有当构造函数的返回值(Result(6))不是时,构造函数才能返回除此之外的值对象类型。此条件允许构造具有非对象值的对象或将控制传递给其他构造函数。
以上是JavaScript 构造函数何时可以返回除'this”之外的其他内容?的详细内容。更多信息请关注PHP中文网其他相关文章!