标签:闭包 有一个 es6 信息 动作 有趣 return 转换 mat
function test () {
var a = 3
function test2 () {
return a
}
return test2
}
闭包就是我并没有直接向外暴露函数内部的变量a,暴露的是这个函数,而这个函数可以拿到a,相当于通过闭包this是动态指向的,它不是固定指向的。它的作用域就是动态的。所以一般情况下我们管它叫做动态作用域。它是动
态的。有很多方法能够改变这个this指向。
window.a = 3
function test () {
console.log(this.a)
}
test()
test.bind({a: 100})()
bind的意思是说让函数动态绑定到一个对象上去,这个时候的this指向这个对象本身。由这种效果才会导致同一个 function ClassA () {
this.a = 123
}
var obj = {}
console.log(obj.a) // undefined
classA.call(obj)
console.log(obj.a) // 123
function ClassA () {
console.log(this.a)
}
classA() // undefined
classA.call({a: 123}) // 123
12注:因为更改this指向就是使对象和this相等了,所以它们之间的值就是一样的了。它们之间有同样的值,以函数中的为准。
function b () {
this.a = 1
}
o = {
a: 2
}
b.call(o)
console.log(o.a) // 1
标签:闭包 有一个 es6 信息 动作 有趣 return 转换 mat
原文地址:https://www.cnblogs.com/zhaoyang007/p/12422428.html