A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爱编码的J 中级黑马   /  2020-12-29 17:11  /  1742 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[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...)


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马