函数表达式
js 中,函数也是一个数据,在语法上,函数可以用于任何需要数据的地方
JS中,函数是一等公民,函数还可以放到变量当中。
var a = function test () {
// 代码块
}
上面这一块代码是一个函数表达式,test 不会提升到全局。意思是创建一个函数,将其赋值给变量 a
我们知道a 里面保存的是函数的引用地址,那么函数的调用是使用 () 来进行调用,保存到某个变量中的函数地址,直接 a() 就能调用该函数了。
任何可以出现数据的地方,函数就可以出现,函数是引用值类型。
this 关键字
this 是无法赋值的。
在全局作用域中,this指向全局,浏览器环境中指向,node环境非严格模式下指向glob,严格模式下指向。函数作用域中,取决于函数的调用情况
1. 函数是直接调用的,this 是指向全局
2. 通过对象来调用,还是对象的一个属性js箭头函数,格式为 对象.属性(), 这种情况,this 是指向对象本身
3. 如果对象中的函数保存到外部,那this就指向当前外部所处的环境,对象中指向对象,全局的话就指向全局。
4. 函数如果使用 new 的方式来调用js箭头函数, this 指向当前的当前调用的实例对象
function main(){
this.aad = 234;
this.def = function(){
console.log(this);
};
this.foo = function(){
console.log(this === xxx);
};
this.xoo = function(){
console.log(this === main);
};
}
var xxx = new main();
xxx.def();
xxx.foo();
xxx.xoo();
5. 箭头函数调用,this 指向外部的环境。
var obj = {
a: 1,
b: () => {
console.log(this, '-b----')
},
c: {
e: 1232,
d:function(){
console.log(this, '-d----')
}
}
}
obj.b();
obj.c.d();
function test(){
var a = () => {
console.log(this,'------函数里面的箭头函数指向')
}
a();
}
test();
6. dom 中的this 指向dom(事件处理对象).
Document
7. 使用bind、apply、call手动绑定this对象
function hello(thing) {
console.log(this + " says hello " + thing);
}
hello.call("Yehuda", "world")
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。