0

出于某种奇怪的原因,在调用分配this给的函数时,thisObj出现错误:

类型错误:thisObj 未定义

这是我所拥有的:

function templateObject() 
{
    "use strict";
    var thisObj = this;

    function _loadBackgroundImages() 
    {
        "use strict";
        // something happens here
    }


    thisObj.initialise = function() 
    {
        "use strict";
        _loadBackgroundImages();
    };
}

然后使用实例化调用该函数,如下所示:

var templateObj = templateObject();
templateObj.initialise();

无法弄清楚为什么我会收到错误 - 知道吗?

4

2 回答 2

5

使用new

var templateObj = new templateObject();

调用函数 withnew会将新创建的空对象传递this给函数,然后将其返回给templateObj.

于 2013-07-29T15:35:40.327 回答
0

当您像以前那样调用函数时(即不是作为对象的方法):

templateObject()

然后,如果您处于严格模式,this则该函数内部将未定义。

正如@mishik 指出的那样,您似乎想templateObject成为一个构造函数,并且要这样使用它,您需要在它new之前使用关键字调用它:

var templateObj = new templateObject();

一种风格说明:在 JavaScript 中,将用作构造函数的函数命名为具有首字母大写是惯例。

这可能会使这样的错误不太可能发生,因为看到一个初始大写为 without 的函数看起来很奇怪new

function TemplateObject() {
    ...
}
var templateObj = new TemplateObject();
于 2013-07-29T15:40:47.590 回答