[英]How do I assign a real function into a javascript object to use as a callback?
[英]How do I assign a function to the property of a Javascript object?
我正在尋找並努力解決以下示例:
var player1= {name: "Chris", score: 1000, rank: 1};
var player2= {name: "Kristofer", score: 100000, rank: 2};
function playerDetails(){
alert("The name of the player is "+ this.name + "."+ " His score is : "+ this.score + "and his rank : "+ this.rank);
}
player1.logDetails= playerDetails;
player2.logDetails= playerDetails;
player1.logDetails();
player2.logDetails();
據我所知player1.logDetails
是player1.logDetails
的屬性或 player1 的方法。 所以我無法理解作者如何將屬性分配給函數。 我也不明白你為什么要這樣寫而不是: player1.logDetails= playerDetails(); 我已經嘗試過但不起作用。
然后他調用player1.logDetails()
這是一個函數但沒有在任何地方聲明。(?)
如果有人可以幫忙嗎?? 先感謝您
如果代碼是這樣寫的,我打賭你理解它:
var player1 = {
name: "Chris",
score: 1000,
rank: 1,
playerDetails: function() { alert('The name is '+ this.name) }
};
var player2 = {
name: "Kristofer",
score: 10000,
rank: 2,
playerDetails: function() { alert('The name is '+ this.name) }
};
代碼的作者想定義一次“playerDetails()”函數。
以簡化方式顯示這一點的另一種方法是:
var player1 = {
name: "Chris",
score: 1000,
rank: 1
};
player1.playerDetails=function() { alert('The name is '+ this.name) }
var player2 = {
name: "Kristofer",
score: 10000,
rank: 2
};
player2.playerDetails=function() { alert('The name is '+ this.name) }
所以如果你想通過只編寫一次 playerDetails 函數來優化上面的代碼,它看起來就像你帖子中的代碼。
如果我寫了代碼塊,我可能會這樣寫:(這很容易閱讀)
function playerDetailsFunc() {alert('The name is '+ this.name) }
var player1 = {
name: "Chris",
score: 1000,
rank: 1,
playerDetails: playerDetailsFunc
};
var player2 = {
name: "Kristofer",
score: 10000,
rank: 2,
playerDetails: playerDetailsFunc
};
Javascript 函數與其他值或對象沒有區別。
您可以將它們分配給您想要的任何東西; 您甚至可以將它們作為參數傳遞。
我自己還是個新手,但您可以在對象中創建該方法作為替代方法。
var player1= {name: "Chris", score: 1000, rank: 1, logDetails: playerDetails};
var player2= {name: "Kristofer", score: 100000, rank: 2, logDetails: playerDetails};
function playerDetails(){
console.log("The name of the player is "+ this.name + "."+ " His score is : "+ this.score + "and his rank : "+ this.rank);
}
player1.logDetails();
player2.logDetails();
此外,下面“定義方法”下的鏈接可能有助於回答您的問題。 在此處輸入鏈接描述
var player1= {name: "Chris", score: 1000, rank: 1}; var player2= {name: "Kristofer", score: 100000, rank: 2}; playerDetails = player => console.log( "The name of the player is "+ player.name + "."+ " His score is : "+ player.score + "and his rank : "+ player.rank); player1.logDetails= playerDetails(player1); player2.logDetails= playerDetails(player2);
player1.logDetails(player1);
player2.logDetails(player2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.