• 181 this指向问题


    ​ this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是那个调用它的对象。

    现阶段,我们先了解一下几个this指向

    1. 全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window) 【全局作用域下的变量、函数会作为window对象的属性、方法,只是通常省略window。】

    2. 方法调用中谁调用this指向谁 【即对象中的方法指向对象自己。】

    3. 构造函数中this指向构造函数的实例。

            // this 指向问题 一般情况下this的最终指向的是那个调用它的对象
    
            // 1. 全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window)
            console.log(this);
    
            function fn() {
                console.log(this);
            }
            window.fn();
    
            window.setTimeout(function() {
                console.log(this);
            }, 1000);
    
    
            // 2. 方法调用中谁调用this指向谁
            var o = {
                sayHi: function() {
                    console.log(this); // this指向的是 o 这个对象
                }
            }
            o.sayHi();
    
            var btn = document.querySelector('button');
            // btn.onclick = function() {
            //     console.log(this); // this指向的是btn这个按钮对象
            // }
    
            btn.addEventListener('click', function() {
                console.log(this); // this指向的是btn这个按钮对象
            })
    
            // 3. 构造函数中this指向构造函数的实例
            function Fun() {
                console.log(this); // this 指向的是fun 实例对象
            }
            var fun = new Fun();
    

    this

    函数执行的主体(不是上下文): 意思是谁把函数执行的,那么执行主体就是谁。

    北京饭店 吃饭,我是主体,北京饭店是上下文。】

    THIS非常的不好理解,以后遇到THIS,想一句话:“你以为你以为的就是你以为的”

    1. 给元素的某个事件绑定方法,当事件触发方法执行的时候,方法中的this是当前操作的元素本身。

    2. 如何确定执行主体(this)是谁?

      当方法执行时候,我们看方法前面是否有点:

      (1)没有点,this是window 或 undefined;

      (2)有点,点前面是谁this就是谁。

    var name = '杰帅';
    function fn(){
        console.log(this.name);
    }
    var obj = {
        name: "你好世界",
        fn: fn
    };
    obj.fn(); // => this: obj  【前面有点】
    fn(); // => this: window(非严格模式是window,严格模式下是undefined) window.fn()把window.省略了
    
    (function(){
    	//自执行函数中的this是window 或 undefined    
    })();
    
  • 相关阅读:
    .net实现浏览器大文件分片上传
    asp.net实现浏览器大文件分片上传
    php实现浏览器大文件分片上传
    Java实现浏览器大文件分片上传
    文件分片上传
    大文件分片上传
    pdf缩略图生成上传解决方案
    专业精神的三个步骤
    安卓TabHost+ViewPager+RadioGroup多功能模板整理
    java基础之概谈xml文件解析
  • 原文地址:https://www.cnblogs.com/jianjie/p/12180957.html
Copyright © 2020-2023  润新知