javaScript中的 call 和 apply

call 和apply都可以实现函数的调用

    // 普通函数的调用
    function foo() {
        console.log('foo');
    }
    foo(); // foo
    foo.call(); // foo
    foo.apply(); // foo
// ===========================
    // 带参数的普通函数的调用
    function foo(a,b) {
        console.log(a+b);
    }
    foo(1,2); // 2
    foo.call(null,3,4); // 7
    foo.apply(null,[5,6]); // 11

改变函数内部的this指向


    // 改变this指向
    var fn = function () {
        console.log(this.userName)
    }
    fn(); // undefined 函数内部的this为windon
    window.userName = '李四';
    fn(); // 李四 函数内部的this为windon

    var obj = {
        userName: '张三'
    }
    fn.call(obj); // 张三, 这里就改变了函数内部的this,this为当前传进去的obj
    var obj2 = {
        userName: '老王'
    }
    fn.apply(obj2); // 老王, 和call一样,就是参数不同,这里没有参数

猜你喜欢

转载自www.cnblogs.com/ybixian/p/9458111.html