JS – call/apply
JS – call/apply
function f() { this.x = 333; // // this 指向 window } f(); alert(x);
var obj = {x: 999, y: 888, f: function() { alert(this.x); }}; obj.f(); // 999 var obj2 = {x: 111}; obj2.f = obj.f; obj2.f(); // 111
function func() { alert(this.name); // this 指向的是 window } var dog = { name: ‘a dog‘ }; dog.func(); // 错误, dog 里面没有 func 方法 var name = ‘I am window‘; func.call(dog); // 输出 a dog // 输出 I am window func.call(); func.call(window);
function f(val) { alert(this.name + ‘ val is ‘ + val); } function Dog(name) { this.name = name; } var d = new Dog(‘a dog‘); f.call(d, ‘abc‘); // d 作为参数进入 f 就变成了里面的 this, abc 作为参数 传入 f(val) 中 f.apply(d, Array(‘a dog‘)); // apply 和 call 类似, 不过他呼叫的是参数是数组, 对于需要 arguments 的时候游泳
时间: 2024-10-21 09:35:53