我有一个对象声明如下:
function weapon ( id, name){
this.id = id;
this.name = name;
this.call;
}
然后我创建了一个实例:
someweapon = new weapon (1, 'gun');
someweapon.call = function() { //do something };
当我创建元素时:
<img src='...' onclick='someweapon.call()' />
假设我会看到一个可点击的图片,我可以点击它来调用该功能。但是,只要显示图像,就会自动调用该函数(someweapon.call())。
对此有何解决方案?
答案 0 :(得分:2)
我认为它与函数名称有关:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call 所以你可以试试另一个。
答案 1 :(得分:2)
对我来说,你的代码是有效的。 .call()
方法可能是从其他地方调用的。
Here是一个适用于我的代码段。
JavaScript的:
function weapon ( id, name){
this.id = id;
this.name = name;
}
someweapon = new weapon (1, 'gun');
someweapon.call = function() { alert("called"); };
this.call
内的weapon()
不需要undefined
。如果您在那里定义它仍然具有值this.call = function() { alert("called"); };
。您也可以在weapon()
内写weapon
,这意味着someweapon
的每个实例都可以访问<img src='http://jsfiddle.net/img/logo.png' onclick='someweapon.call()' />
,而不仅仅是call()
。
HTML:
.call()
编辑: tom 和 Jared Farrish 有一个好点。函数已.call()
defined。您正在为对象而不是函数定义{{1}},因此不应该(理论上)覆盖任何内容,但是不使用这样的名称是一个好习惯,因为它可能会让人感到困惑。将{{1}}重命名为其他内容。