[英]passing arguments in constructer function in javascript
function player(){
this.hitpoints =100;
this.attack = function attack(opponent){
opponent.hitpoints -= 10;
}
}
var p1 = new player();
var p2 = new player();
p1.name = "ali";
p2.name = "ahmed";
p1.attack(p2);
alert(p2.name+"has"+p2.hitpoints+"left behind");
上面代码的输出是
艾哈迈德(Ahmed)还剩下90。
但是每当我将代码更改为p1.attack(p2.name;
而不是p1.attack(p2);
,它将输出以下结果:
艾哈迈德(Ahmed)还剩100人。
为什么输出此结果?
我是Java语言的初学者,我对对象一无所知。 我只是想知道如何在特定的attack()
函数中传递参数。
这是因为要将对象传递给函数。 将p2.name
作为参数传递将不起作用,因为p2.name
是具有字符串数据类型的属性。
然后,该操作将使用以下给定的参数:
attack(p2) => p2.hitpoints -= 10
attack(p2.name) => p2.name.hitpoints -=10,
这是无效的,因为p2.name不是播放器的实例。
如果您使用
p1.attack(p2.name)
那么代码将尝试从p2.name.hitpoints
减去10,并保持p2.hitpoints
完整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.