javaScript中的 this

普通函数中的 this

    // es3中
function foo() {
    console.log(this);// 这里的this是 window
}
foo();

// 在es5中 严格模式下
function foo() {
    'use strict'
    console.log(this);// 这里的this是 undefined
}
foo()

对象方法中的 this

1.对于字面量方法中的this 指的是字面量那个变量 (obj)

var obj = {
    info: 'tom',
    showInfo: function(){
        console.log(this.info); // 这里的this 是 obj
    }
}

console.log(obj.showInfo()); //  undefined 这里的undefined是函数的返回值

var ret = obj.showInfo();
console.log(ret); // undefined

构造函数中的 this

  1. 对于构造函数方法中的 this 指的是实例化出来的实例对象 如 f1,f2
function Foo(name,age){
    // 这里的this指的是具体的某个实例 f1 或者 f2
    this.name = name;
    this.age = age;
    this.showName = function () {
        // 这里的this指的是具体的某个实例 f1 或者 f2
        console.log(this.name);
    }
}
var f1 = new Foo('zhangsan',1);
f1.showName(); // zhangsan
var f2 = new Foo('lisi',2);
f2.showName(); // lisi

面向对象中的 this

  1. 这里的this 指的是该构造函数创建出来的实例
function Foo(info) {
    // 这里的this 指的是该构造函数创建出来的实例,这个this和原型中的this是同一个指向
    this.info = info;
}
Foo.prototype.showInfo = function () {
    // 原型里面的this 指的是通过原型所属的构造函数创建出来的实例
    console.log(this.info);
}

var f1 = new Foo('hello');
f1.showInfo(); // hello

posted @ 2018-06-04 00:30  山村码农  阅读(116)  评论(0编辑  收藏  举报