<!-- <script>
// 如果函数的内部的this跟我们想要的不一样,我们就可以改变函数内部的this
var obj = {username : 'zhangsan'}
function fn(a,b){
console.log(this)
console.log(a,b)
}
// 这里的this指向window
fn()
// call是函数的方法,函数本质也是对象,也有方法
/*
call语法: `函数名.call(要改变的 this 指向,要给函数传递的参数1,要
给函数传递的参数2, ...)
- fn()` 的时候,函数内部的 this 指向 window
- `fn.call(obj, 1, 2)` 的时候,函数内部的 this 就指向了 obj 这个对象
- 使用 call 方法的时候
- 会立即执行函数
- 第一个参数是你要改变的函数内部的 this 指向
- 第二个参数开始,依次是向函数传递参数
*/
// {username: 'zhangsan'} 100 200
fn.call(obj,100,200)
</script> -->
<!-- <script>
/*
apply方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向
语法: `函数名.apply(要改变的 this 指向,[要给函数传递的参数1,
要给函数传递的参数2, ...])
`fn()` 的时候,函数内部的 this 指向 window
- fn.apply(obj, [1, 2])` 的时候,函数内部的 this 就指向了 obj 这个对象
- 使用 apply 方法的时候
- 会立即执行函数
- 第一个参数是你要改变的函数内部的 this 指向
- 第二个参数是一个 **数组**,数组里面的每一项依次是向函数传递的参数
*/
var obj = {
name:'Jack'
}
function fn(a,b){
console.log(this)
console.log(a,b)
}
// 这里的this指向window
fn()
// 这里的this指向obj对象{name: 'Jack'}, a=1,b=2
fn.apply(obj,[1,2])
</script> -->
<!-- <script>
/*
bind- bind` 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向
- 和 call / apply 有一些不一样,就是不会立即执行函数,而是返回一个已经
改变了 this 指向的函数
- 语法: `var newFn = 函数名.bind(要改变的 this 指向); `
- `newFn(传递参数)`
- bind 调用的时候,不会执行 fn 这个函数,而是返回一个新的函数
- 这个新的函数就是一个改变了 this 指向以后的 fn 函数
- `fn(1, 2)` 的时候 this 指向 window
- `newFn(1, 2)` 的时候执行的是一个和 fn 一摸一样的函数,只不过里面的
this 指向改成了 obj
*/
var obj = {
name:'Jack'
}
function fn(a,b){
console.log(this)
console.log(a,b)
}
// 指向window,1,2
fn(1,2)
var newFn = fn.bind(obj)
// 指向obj,1,2
newFn(1,2)
/*
fn(a,b){
console.log(this)
console.log(a,b)
}
*/
console.log(newFn)
</script> -->