我在javascript中有一个行星“类”。当用户单击html5画布时,将调用相应星球的manageClick函数,该函数应更改某个div的内容。内容应更改为按钮。如果用户单击它,则应调用行星函数createShip。
现在的问题是,我该如何引用行星本身?我试图制作一个新函数,该函数在任何对象上调用createShip(),然后使用参数“ this”对其进行调用。但这似乎不起作用。这样做的正确方法是什么?
Planet.prototype.createShip =function() {...}
Planet.prototype.manageClick=function() {
$(".dropdown").html("<button onclick=\"buyship(this)\">Buy a ship</button>");
}
function buyship(obj) {
obj.createShip();
}
最佳答案
不要使用onclick。而是使用jquery创建按钮并将功能绑定到click事件。使用函数的.bind
方法,可以将this
值显式绑定到该函数,而不必将其作为参数传递。
Planet.prototype.createShip =function() {...}
Planet.prototype.ManageClick=function() {
var self = this;
var buyShip = $("<button id='buyShip'>Buy a ship</button>").click(buyship.bind(self))
$(".dropdown").append(buyShip);
}
function buyship() {
this.createShip();
}
小提琴:https://jsfiddle.net/brko5jr7/1/