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