2016-04-01 61 views
2

我无法运行此MyError类中的任何方法。使用ES6类扩展错误

class MyError extends Error { 
    constructor(message) { 
    super() 
    this.name = 'MyError' 
    this.message = message 
    this.stack = (new Error(message)).stack 
    return this 
    } 
    doSomething() { 
    return this.message + " dolphin" 
    } 
} 

let myError = new MyError('Invalid Form.') 

console.log(myError.doSomething()) 

出于某种原因,这是给我的错误:

console.log(myError.doSomething()); 
        ^

TypeError: myError.doSomething is not a function 
+0

[对我的作品(https://jsfiddle.net/wLmbqg81/) – Andy

+0

这里可能有一些见解http://stackoverflow.com/a/32750746/340688 – ThomasReggi

+0

@AndyI认为这是一个通天塔( – ThomasReggi

回答

0

发现你不能扩展错误。

有一个包es6-error与一个错误,你可以扩展。

import ExtendableError from 'es6-error'; 

class MyError extends ExtendableError { 
    constructor(message) { 
    super() 
    this.name = 'MyError' 
    this.message = message 
    this.stack = (new Error(message)).stack 
    return this 
    } 
    doSomething() { 
    return this.message + " dolphin" 
    } 
} 

let myError = new MyError('Invalid Form.') 

console.log(myError.doSomething()) 
+0

可能值得在你的回答中加入(Babel)的原因,并附上你评论中的链接以使其明确。 – Andy