this详解
现在我们需要掌握函数内部的this几个特点
1.函数在定义的时候this是不确定的,只有在调用的时候才确定。
2.一般函数在执行时,内部this指向全局window.
3.函数作为一个对象的方法,被该对象所调用,那么this指向的是对象(谁调用指向谁)。
4.构造函数中的this,对象的实例
下面相关例题:
// 1. 普通函数
function fn() {
console.log(this); // this 指向 window
}
fn();
// 2 对象方法
var obj = {
name: 'zs',
age:18,
sex:'男'
dance: function() {
console.log(this)
}
}
obj.dance(); // this 指向 obj
// 3 构造函数
function str(name, age, sex) {
//必须写this 不然赋值是指向全局的(window)this把赋值指向下面的变量a(有new的时候) 此时里面的赋值才能被调用
//如果没有new 这此时指向的是window
// var this={} 这里相当于创建了一个this对象
this.name = name;
this.age = age;
this.sex = sex;
//这个函数是匿名立即执行函数
this.ad = function() {
pro = '贵州'
city = '六盘水'
}
}
var zs = new str('haha', 34, 'nv')//this指向 zs
console.log(zs);
运行结果:
-
1.window 2.{name: "zs", age: 18, sex: "男", dance: ƒ} 1. age: 18 2. dance: ƒ () 3. name: "zs" 4. sex: "男" 5. proto: Object true 3.str {name: "haha", age: 34, sex: "nv", ad: ƒ} 1. ad: ƒ () 2. age: 34 3. name: "haha" 4. sex: "nv" 5. proto: Object