zoukankan      html  css  js  c++  java
  • 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    
    })();
    
  • 相关阅读:
    帆软 控件内容 清除
    Spring MVC 拦截器
    jsp文件调用本地文件的方法(Tomcat server.xml 设置虚拟目录)
    Junit 4 测试中使用定时任务操作
    通过URL传递PDF名称参数显示PDF
    SpringMVC 无法访问到指定jsp页面可能的原因
    优化小技巧——复杂属性对象的read模式
    [as部落首发]网页游戏开发中的一些小技巧
    Flash Platform 游戏开发入门
    理解 Flash 中的 ActionScript 3 调试
  • 原文地址:https://www.cnblogs.com/jianjie/p/12180957.html
Copyright © 2011-2022 走看看