如何在 TopDownGame
范围之外调用 setTile
函数?我尝试了 TopDownGame.Lesson31.setTile(x,y)
,但它不起作用。
var TopDownGame = TopDownGame || {};
TopDownGame.Lesson31 = function() {};
TopDownGame.Lesson31.prototype = {
setTile: function(x, y) {
console.log(tile);
}
};
最佳答案
如果您已添加到原型(prototype),则必须创建对象的实例来调用方法:
var TopDownGame = TopDownGame || {};
TopDownGame.Lesson31 = function() {};
TopDownGame.Lesson31.prototype = {
setTile: function(x, y) {
console.log("setTile invoked");
},
};
var instance = new TopDownGame.Lesson31();
instance.setTile(3, 4);
您试图像调用静态方法一样调用它。如果这就是您真正想要做的,请将方法定义为函数的属性,而不是原型(prototype)的属性。
TopDownGame.Lesson31 = function() {};
TopDownGame.Lesson31.staticMethod = function() {
console.log('Static method invoked');
}
TopDownGame.Lesson31.staticMethod();
但是,如果您确实想保留 setTile
作为原型(prototype)方法,但仍调用它,则可以使用 apply
方法。
var TopDownGame = TopDownGame || {};
TopDownGame.Lesson31 = function() {};
TopDownGame.Lesson31.prototype = {
setTile: function(x, y) {
console.log(`setTile invoked, this='${this}', x=${x}, y=${y}`);
},
};
new TopDownGame.Lesson31().setTile(3, 4);
TopDownGame.prototype.setTile.apply('actually a string', [5, 6]);
这将导致:
setTile invoked, this='[object Object]', x=3, y=4
setTile invoked, this='actually a string', x=5, y=7
关于javascript - 如何在 JavaScript 中调用原型(prototype)之外的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696596/