美文网首页
call() - 2018-06-28

call() - 2018-06-28

作者: 勇敢的小拽马 | 来源:发表于2018-06-28 18:34 被阅读0次
  • 2018-06-28 创建
        window.color = 'red';
        document.color = 'yellow';

        var s1 = {color: 'blue' };
        function changeColor(){
            console.log(this.color);
        }

        changeColor.call();         //red (默认传递参数)
        changeColor.call(window);   //red
        changeColor.call(document); //yellow
        changeColor.call(this);     //red
        changeColor.call(s1);       //blue
    var Pet = {
        words : '...',
        speak : function (say) {
            console.log(say + ''+ this.words)
        }
    }
    Pet.speak('Speak'); // 结果:Speak...

    var Dog = {
        words:'Wang'
    }

    //将this的指向改变成了Dog
    Pet.speak.call(Dog, 'Speak'); //结果: SpeakWang

语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])

调用一个对象的一个方法,以另一个对象替换当前对象。
call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

其他

[].slice.call(arguments).forEach(ele => {}) 
Array.prototype.slice.call(arguments).forEach(ele => {}) 

就是截取(更重要的是获取,slice是得到子数组)函数的参数,然后让arguments等“伪数组”也可以使用数组的各种方法。

ES6: Array.from()
  let p = document.querySelectorAll('p');
  Array.from(p).forEach(ele => {})

相关文章

网友评论

      本文标题:call() - 2018-06-28

      本文链接:https://www.haomeiwen.com/subject/rejnyftx.html