函数中的'this'

时间:2016-01-16 11:34:17

标签: javascript oop methods

我对我正在处理的一段javascript代码提出了疑问。在stackoverflow的另一个问题中,我已经读过你可以在一个对象内的method2中执行this.method1。但是,当这样做'this'指向当前窗口对象时,无法找到method1(自然)。

请告诉我如何最好地解决这个问题。

我得到的错误是:

TypeError: this.initFB is not a function
this.initFB();

代码:

var FPPL = {
    /** Variables */
    larvaunched     : false,

    /**
     *
     */

    initFB          : function(){
        if ((typeof(FB)!= 'undefined')) {
        FB.init({
            xfbml: true,    
            status : true, // check login status
            cookie : true // enable cookies to allow the server to access the session
            });
        }

    },

    initCode        : function(){
        console.log(this);
        this.initFB();
        if (!this.checkForLaunch())
            return false;

        window.setTimeout(this.showFaceBox, lb_l_ret.delay);
    }
....
}
window.fbAsyncInit = FPPL.initCode;

1 个答案:

答案 0 :(得分:3)

您可以将this.initFB();更改为FPPL.initFB();,以使此脚本生效。 this与函数相关,您创建了一个对象(即FPPL)。

如果您想在代码中使用this,我会选择https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new示例:

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

Car.prototype.doSomething = function () {
  // you can use this here
};

var mycar = new Car("Eagle", "Talon TSi", 1993);