繁体   English   中英

在javascript中的构造函数中传递参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM