【发布时间】:2012-02-18 20:43:48
【问题描述】:
我遇到了将 Array 原型应用于原生对象的两种方法:
arr = Array.prototype.slice.call(obj);
arr = [].slice.call(obj);
以类似的方式,获取原生类数组对象的真实类型:
type = Object.prototype.toString.call(obj);
type = {}.toString.call(obj);
一个简单的测试:
function fn() {
console.log(
Array.prototype.slice.call(arguments),
[].slice.call(arguments),
Object.prototype.toString.call(arguments),
{}.toString.call(arguments)
);
}
fn(0,1);
小提琴:http://jsfiddle.net/PhdmN/
他们看起来和我一模一样;第一种语法使用得更频繁,但第二种语法肯定更短。使用较短的语法有什么缺点吗?
【问题讨论】:
-
第二种语法不必要地创建了一个新对象。
-
@DanD.,您应该将此作为答案发布,因为它是正确答案。 ;)
标签: javascript arrays object syntax prototype