JavaScript-在使用“;应用”;

JavaScript - losing array index after using "apply"

本文关键字:应用 JavaScript-      更新时间:2023-09-26

    // this is not looping through the "girls" array as expected, but breaking down
    // the first element of the array to its char elements
    
    var girls = ["sandy","katie","lynda","wendy"];
    
    function showGirlsTalent(girl) {
    
    	for (var i in girl) {
    		
    		var rand = Math.floor(Math.random() * this.talents.length + 1);
    		console.log(girl[i] + ' can ' + this.talents[rand]);
    	}
    }
    
    var talent = {
    	
    	talents:['dance','sing','act']
    }
    
    function createTalent(girl, callback) {
    
    	showGirlsTalent.apply(callback,girl);
    }
    
    createTalent(girls, talent);

在有趣的.apply(thisArg,argsArray)调用中,argsArray = ["sandy","katie","lynda","wendy"],所以您最终调用showGirlsTalent("sandy","katie","lynda","wendy")。您只使用showGirlsTalent中的第一个参数,并通过for..in循环使用它来获取各个字符。

通过在您喜欢的浏览器中使用调试器,您可以很容易地实现这一点。你知道怎么用吗?