javascript - 为什么要用 [].shift.call( array )之类的方法实现array.shift()呢
天蓬老师
天蓬老师 2017-04-10 16:54:17
0
1
921
# 下面这几个函数里面为什么用call() 这种方式呢 function.prototype.bind = function () { var self = this, context = [].shift.call(arguments), args = [].slice.call(arguments); return function () { return self.apply( context, [].concat.call(args, [].slice.call(arguments)) ) } } var objectFactory = function () { var obj = new Object, Constructor = [].shift.call( arguments ); ...... } var hasProp = {}.hasOwnProperty; var extends = function ( child, parent ) { for(var key in parent) { if (hasProp.call( parent, key)) { ...... } } ...... }
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

reply all (1)
刘奇

喔,原来是因为arguments是一个类数组对象,虽然他也有下标,但并非真正的数组,所以他不能和数组一样进行排序添加之类的操作,这种情况下 借用array.prototype对象上的方法,可以对arguments完成push,shift等操作,array.prototypr.slice()就可以吧arguments转换成真正的数组
(发布了问题,然后找到答案了,自问自答)

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!