2016-01-11 66 views
0

我目前正在構建一個(ES6)JavaScript構造函數,並想知道如何處理「失敗」。我正在考慮簡單地登錄到控制檯並設置this = undefined;,但由於某種原因,這是「非法的左側任務」。這大概是我想到的:在JavaScript構造函數中失敗

class Foo { 
    constructor(foo) { 
    if (foo === bar) { 
     // considered "success" 
     this.foo = foo; 
    } else { 
     // failure 
     console.log("oh noes!"); 
     this = undefined; 
    } 
    } 
} 

這會被認爲是明智的做法嗎?我只是想了解什麼最好實踐應該是,在使用構造函數失敗。

+1

這是不特定ES6。這在ES5中也是不可能的。 –

回答

1

您不能直接分配給this,但如果你想在一個錯誤的情況下返回undefined,你可以使用一個工廠方法:

class Foo { 
    constructor(foo) { 
    if (foo !== bar) { 
     throw new Error('oh noes!'); 
    } 
    } 
} 

let Factory = { 
    createFoo(f) { 
    try { 
     return new Foo(f); 
    } catch(e) { 
     console.log(e.message); 
    } 
    } 
}; 

let myFoo = Factory.createFoo(baz); 
+0

你也可以在'Foo'上創建'create'靜態函數,而不是'Foo.create(baz)'。 – loganfsmyth

相關問題