黑马程序员技术交流社区

标题: 【面试系列】this指向问题 [打印本页]

作者: 爱编码的J    时间: 2020-12-29 17:11
标题: 【面试系列】this指向问题
[JavaScript] 纯文本查看 复制代码
 var x = 3;
    var y = 4;
    var obj = {
        x: 1,
        y: 6,
        getX: function () {
            var x = 5;
            return function () {
                return this.x;
            }();
        },
        getY: function () {
            var y = 7;
            return this.y;
        }
    }
    console.log(obj.getX())//3
    console.log(obj.getY())//6


this指向问题分为四种:
1.函数调用模式中this指向window。如题中obj.getX()返回的是一个立即执行函数,而这个函数的调用者就是window
2.方法调用模式中this指向调用对象。如题中的obj.getY()
3.构造函数调用模式,this指向new出来的对象,也就是实例对象
[JavaScript] 纯文本查看 复制代码
   function A() { this.name = "yy1" }
    var a = new A();
    console.log(a.name)


4.上下文调用模式,可以指定this的作用域。当第一个参数是null或者undefined时,this指向window。
apply()和call()
fn.apply(作用域,[...args])
fn.call(作用域,arg1,arg2,arg3...)







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2