【发布时间】:2016-11-01 10:32:08
【问题描述】:
在过去的几天里,我一直在研究一些数组方法,并且看到了像 [].splice.apply 和 [].push.apply 这样的带有一些参数的东西。
现在我想我理解例如拼接
var tuna = ['bob', 'john' , 'papa' , 'greg'];
var newArr = []
tuna.splice(0,2,"hello");
console.log(tuna);
将输出hello,papa,greg,因为它删除了第 0 个索引中的 2 个术语。
我也知道 apply 在以下情况下是如何工作的
var person = {
firstname: 'John',
lastname: 'Doe',
getFullName: function() {
var fullname = this.firstname + ' ' + this.lastname;
return fullname;
}
}
var logName = function(lang1, lang2) {
console.log('Logged: ' + this.getFullName());
console.log('Arguments: ' + lang1 + ' ' + lang2);
console.log('-----------');
}
var logPersonName = logName.bind(person);
logPersonName('en');
logName.call(person, 'en', 'es');
logName.apply(person, ['en', 'es']);
那么当我们结合这两种方法,或者使用 apply 推送时会发生什么?一个简单的例子会很有帮助。
【问题讨论】:
-
[].splice.push没有意义。[].splice.apply确实如此,因为“应用”是函数原型上的函数名称。现在,出于类似的原因,[].push.apply是有道理的。 -
是的,很抱歉,出于某种原因,我不假思索地输入了它。感谢指正
标签: javascript