簡體   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