Javascript对象从自身调用函数

Cod*_*gie 9 javascript prototype function object

我一直在阅读使用HTML5和JavaScript的游戏设计,它向我介绍了对象.因此,在阅读完本书并开展项目后,我决定采用这些新发现的知识并将对象集成到我自己的项目中.所以这是我的问题可以或应该对象调用自己的函数?例如:

var someObject = {
    start: function() {
        check();
    },
    check: function() {
        console.log("Check!");
    }
};

someObject.start();
Run Code Online (Sandbox Code Playgroud)

这本书确实展示了一个带有计时器的例子:

var timer = {
    start: function() {
        var self = this;
        window.setInterval(function(){self.tick();}, 1000);
    },
    tick: function() {
        console.log('tick!');
    }
};
Run Code Online (Sandbox Code Playgroud)

在带有timer对象的示例中,它为self调用内部函数,因此这意味着我应该使用self来调用内部函数,或者这是使用对象执行此操作的正确方法吗?还是最佳实践?提前致谢.

var someObject = {
    start: function() {
        var self = this;
        self.check();
    },
    check: function() {
        console.log("Check!");
    }
};

someObject.start();
Run Code Online (Sandbox Code Playgroud)

voi*_*hos 7

JavaScript名称是词法范围的,因此每当在脚本中遇到名称(变量)时,JavaScript运行时必须搜索定义函数的范围.

在定义时,这个功能:

start: function() {
    check();
}
Run Code Online (Sandbox Code Playgroud)

无法访问check其外部作用域中的任何函数.声明self和绑定它this是一种技术,用于处理在JavaScript 中引用当前对象(因为示例代码使用window.setInterval)的(有点有趣)错综复杂.

要引用当前对象中的函数,只需使用即可this.

var someObject = {
    start: function() {
        this.check();
    },
    check: function() {
        console.log("Check!");
    }
};
Run Code Online (Sandbox Code Playgroud)