如何抛出undefined,正确使用$ .extend()

时间:2014-01-23 15:45:46

标签: javascript jquery

我有以下小提琴:basic js class当我尝试throw 'error'或代码示例中注释掉的行时,throw AS.Exception.message('Test Error message')控制台回来说它未定义(它是扔)。而且我都喜欢......不,不是 - 除非我使用它错了。

另外 - 另一个问题是AS.Class正在使用$.extend() method 将两个或多个对象的内容合并到第一个对象中。所以我应该能够做类似的事情:

throw self.message // var self = this;

但是,如果我尝试它,则表明该消息不存在或不是函数,如果$.extend()合并两个对象,则方法message应该在同一范围内。因此我不应该做AS.Exception.message - 因为它被合并到这个新对象......

想法?

2 个答案:

答案 0 :(得分:2)

你所拥有的只是一堆对象文字。这不是一个“阶级”。执行var self = this时,它会在全局范围内执行,self只保存对全局对象的引用(当然,它不具有message属性)。

  

控制台回来说它未定义(它正在抛出)

throw无法定义(无法定义)。它是一种语言结构,而不是参考。我想你的意思是你正在抛出价值undefined。原因是你调用的函数没有返回任何东西(所以它隐式返回undefined)。你实际拥有的是:

AS.Class = $.extend(AS.Exception, {
    throwError: function(){
        throw undefined;
    }
});

答案 1 :(得分:0)

.message()方法返回undefined。这就是抛出的东西。

http://jsfiddle.net/v4xXt/1/