javascript应用程序不触发传递给它的数组中的每个索引
为什么javascript应用程序不触发传递给它的数组中的每个索引,javascript,Javascript,为什么objA.myf3.apply(这个,a)only console.log数组中的第一个索引a 我是如何使用apply的?我希望对数组中的每个索引调用myf3:function(myarr) 我希望它能记录下来 1. 2. 3. 4. 谢谢你的帮助 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="http://ajax.googleapis.c
objA.myf3.apply(这个,a)
only console.log数组中的第一个索引a
我是如何使用apply的?我希望对数组中的每个索引调用myf3:function(myarr)
我希望它能记录下来
1.
2.
3.
4.
谢谢你的帮助
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
var objA = {
myf3:function(myarr){
console.log(myarr); // why does only the first index of the array come through?
}
};
var objB = {
myfb2:function(){
var a = [1,2,3,4,5,6,7,8,9];
objA.myf3.apply(this,a);
}
};
objB.myfb2();
</script>
</head>
<body>
test apply?????
</body>
var objA={
myf3:功能(myarr){
console.log(myarr);//为什么只通过数组的第一个索引?
}
};
变量objB={
myfb2:函数(){
变量a=[1,2,3,4,5,6,7,8,9];
objA.myf3.apply(本,a);
}
};
objB.myfb2();
测试应用?????
将中断数组参数并将单个值作为参数传递。所以,在这种情况下,你会得到9个参数。您可以通过这样做来确认这一点
myf3:function(myarr) {
console.log(arguments); // arguments will print all the parameters passed
}
所以,你应该用这里
它将按原样传递参数
var objA = {
myf3: function(myarr) {
console.log(arguments);
}
};
var objB = {
myfb2: function() {
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
objA.myf3.apply(this, a);
}
};
objB.myfb2();
# { '0': 1,
# '1': 2,
# '2': 3,
# '3': 4,
# '4': 5,
# '5': 6,
# '6': 7,
# '7': 8,
# '8': 9 }
但是当我们使用.call
时
var objA = {
myf3: function(myarr) {
console.log(myarr);
}
};
var objB = {
myfb2: function() {
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
objA.myf3.call(this, a);
}
};
objB.myfb2();
# [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
var objA = {
myf3: function(myarr) {
console.log(myarr);
}
};
var objB = {
myfb2: function() {
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
objA.myf3.call(this, a);
}
};
objB.myfb2();
# [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]