[].slice.call(arguments) {}

Array.prototype.slice.call(arguments)可以等于这样写[].slice.call(arguments)
大家都看过这样的写法,那么问题来了
Array.prototype===[]//false
然后又试了[]===Array.prototype//false
最后Object.prototype可以这样写吗{}?
ibeautiful
浏览 349回答 2
2回答

子衿沉夜

对比错了,应该是Array.prototype.slice===[].slice因为[]是Array的实例,且slice函数是从原型中继承过来的,所以可以这么写。关于最后一个问题建议好好看一下JavaScript原型方面的内容。

ITMISS

首先:'=='是值比较'==='是应用比较如你所看到的slice是Array的原型对象上的方法,prototype属性指向原型对象,而[]如公子所说,是Array的实例vara=newArray();//[]不过如果你这个时候用a和[]比较:a===[]//falsea==[]//false首先,a和[]都是引用类型,所以'=='肯定是false,而用'==='是false的原因是a和[]指向不同的堆内存,所以他们栈内存中的引用地址是不同的,所以'==='比较也是false。所以用'==='比较[]和Array.prototype也肯定是false。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript