如何正确地在javascript对象文本中多次传递参数?
我有一个与此类似的对象文字:如何正确地在javascript对象文本中多次传递参数?,javascript,oop,Javascript,Oop,我有一个与此类似的对象文字: var test = { myFunc1: function () { for (var i = 0, j = arguments.length; i < j; i++) { alert('myFunc1: ' + arguments[i]); } }, myFunc2: function () { for (var i = 0, j = arguments.len
var test = {
myFunc1: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc1: ' + arguments[i]);
}
},
myFunc2: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc2: ' + arguments[i]);
}
this.myFunc1.apply(this.myFunc2, arguments);
},
myFunc3: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc3: ' + arguments[i]);
}
this.myFunc2.apply(this.myFunc3, arguments);
}
}
当前,当我调用它时,我得到4个警报框,2个用于myFunc3,2个用于myFunc2。然后我得到一个错误:
Uncaught TypeError: Cannot call method 'apply' of undefined
如果我需要在一个对象中传递一组超过一层的参数,我该如何做呢?有没有更好更正确的方法
下面是一个要演示的JSFIDLE
提前谢谢。仅限纯javascript,请不要使用jquery。需要跨浏览器和平台工作 这是因为
myFunc2
中的this
不再是test
,而是this.myFunc3
。这是在调用This.myFunc2.apply(This.myFunc3,参数)时由您的myFunc3
提供的代码>
要可视化,您的myFunc2
正在执行以下操作:
(this.myFunc3).myFunc1(...);
//instead of
(this).myFunc1(...);
您应该只传入此
,以便对其他函数使用相同的此
this.myFunc2.apply(this, arguments);
这是因为myFunc2
中的this
不再是test
,而是this.myFunc3
。这是在调用This.myFunc2.apply(This.myFunc3,参数)时由您的myFunc3
提供的代码>
要可视化,您的myFunc2
正在执行以下操作:
(this.myFunc3).myFunc1(...);
//instead of
(this).myFunc1(...);
您应该只传入此
,以便对其他函数使用相同的此
this.myFunc2.apply(this, arguments);
试试这个:它很管用。您应该使用这个而不是这个.FuncX
var test = {
myFunc1: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc1: ' + arguments[i]);
}
},
myFunc2: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc2: ' + arguments[i]);
}
this.myFunc1.apply(this, arguments);
},
myFunc3: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc3: ' + arguments[i]);
}
this.myFunc2.apply(this, arguments);
}
};
test.myFunc3('a', 'b');
var测试={
myFunc1:函数(){
for(var i=0,j=arguments.length;i
试试这个:它很有效。您应该使用这个而不是这个.FuncX
var test = {
myFunc1: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc1: ' + arguments[i]);
}
},
myFunc2: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc2: ' + arguments[i]);
}
this.myFunc1.apply(this, arguments);
},
myFunc3: function () {
for (var i = 0, j = arguments.length; i < j; i++) {
alert('myFunc3: ' + arguments[i]);
}
this.myFunc2.apply(this, arguments);
}
};
test.myFunc3('a', 'b');
var测试={
myFunc1:函数(){
for(var i=0,j=arguments.length;i
不是我,但这与@Josephdreamer的回答有何不同?我不理解他的解释。我自己检查过了。他说的基本上是一样的。是的,有解释的代码框架比完全没有解释的代码要好。不是我,但这与@JosephDreamer的答案有什么不同?我不理解他的解释。我自己检查过了。他说的基本上是一样的。是的,有解释的代码框架比完全没有解释的代码要好。