更新时间:2022-09-06 21:34:29
var aik='1'
function a(){
var cle='0';
console.log(this); //window
console.log(this.cle); //undefined
console.log(this.aik); //1
}
function b(){
console.log(this); //window
a();
}
b(); //也可以这么写window.b();
结果:Window {top: Window, location: Location, document: document, window: Window, external: Object…}
Window {top: Window, location: Location, document: document, window: Window, external: Object…}
分析:window.b()这样一些就看的清楚了,b可以认为是window对象的方法。
this是什么?
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。
但是总有一个原则,那就是this指的是调用函数的那个对象。
this是指向哪?
一般而言,在Javascript中,this指向函数执行时的当前对象。跟声明的环境无关,跟执行环境有关。
结果:undefined
分析:this是全局对象,它只能调用全局作用域中的属性与变量,而cle这个变量是在a这个函数作用域中,所以它无法向下寻找作用域中的变量。报undefined
结果:1
改变this的指向:
这里就用到了new这个关键字了。
new操作符会让构造函数产生如下变化:
1. 创建一个新对象;
2. 将构造函数的作用域赋给新对象(因此this就指向了这个新对象);
3. 执行构造函数中的代码(为这个新对象添加属性);
4. 返回新对象
思考:
var aik='1';
function a(){
var cle='0';
console.log(this);
console.log(this.cle);
console.log(this.aik);
}
var aPro=new a();
aPro
//结果:a {}
// undefined
// undefined
为什么?
6.函数名实际上是一个指向函数对象的指针
转载: