2017-02-25 91 views
0

返回错误我试图创建一个(纯)构造函数和QUnit测试它:QUnit严格模式

//app.js 
function myFunc(param1, param2) { 
    this.param1 = param1; 
    this.param2 = param2; 
    return this; 

} 

//test.js 
QUnit.test("should return a string and a number", function(assert) { 

    assert.ok(myFunc("some-string", 4545435234), "a string and a number were returned"); 

}); 

代码运行并经过我的测试,直到我添加"use strict"app.js。然后QUnit显示下列失败消息:

1. Died on test #1 at http://some/url/:1:1: Cannot set property 'param1' of undefined 
Source: TypeError: Cannot set property 'param1' of undefined 

我可以得到两个工作代码和测试通过,如果我返回myFunc参数数组:

function myFunc(param1, param2)) { 
    return [param1, param2]; 
} 

但是,这只是没有按” t看起来没错。我知道这与var提升有关,但我不清楚它。

在此先感谢。 ...

回答

1

在JavaScript函数没有给出默认的上下文(this)严格模式,所以你必须提供上下文。一旦做到这一点,通过new关键字。如果你改变你的断言下面我想这会工作:

assert.ok(new myFunc("some-string", 4545435234), "a string and a number were returned");

+1

100%固定。爱从华盛顿同胞那里得到帮助......谢谢! – kaidez