• JavaScript this 关键词


    this是什么呢?

    JavaScript this 关键词指的是它所属的对象。

    它拥有不同的值,具体取决于它所使用的位置:

    • 在方法中,this 指的是所有者对象。
    • 单独的情况下,this 指的是全局对象。
    • 在函数中,严格模式下,this 是undefined。
    • 在事件中,this 指的是接受时间的元素。

    方法中的this

    在对象方法中,this 指的是此方法的”拥有者“

    1 var person = {
    2   firstName: "Bill",
    3   lastName : "Gates",
    4   id       : 678,
    5   fullName : function() {
    6     return this.firstName + " " + this.lastName;  //返回 Bill Gates
    7   }
    8 };

    上面的 this 指的就是person 对象。

    因为person 对象是fullName 方法的拥有者。

    单独的this

    在单独使用时,拥有者是全局对象,因此 this 指的是全局对象。

    在浏览器窗口中,全局对象是 [object Window]

    1 var x = this; //[object Window]

    在严格模式中,如果单独使用,那么 this 指的是全局对象 [object Window]

    1 "use strict";
    2 var x = this; //[object Window]

    函数中的 this (默认)

    在JavaScript 函数中,函数的拥有者默认绑定 this 。意思就是如果这个函数不在任何一个对象中,单独存在话,那么其拥有者就是浏览器啦,那么其内如果用到了 this 这个 this 指的就是 [objiect Window]

    1 function myFunction() {
    2   return this;
    3 }

    函数中的 this (严格模式)

    JavaScript 严格模式不允许默认绑定。(至于什么是严格模式,可以参考W3school 专题 严格模式讲解)

    在函数中使用时,在严格模式下, this 是未定义的 (undefined)。

    1 "use strict";
    2 function myFunction() {
    3   return this;  //undefined
    4 }

    事件处理程序中的 this

    在 HTML 事件处理程序中, this 指的是接受此事件的 HTML 元素

    1 <button onclick="this.style.display='none'">
    2   点击来删除我!
    3 </button>

    上面的 this 指的就是其所在的 button 元素

    对象方法绑定

    1 var person = {
    2   firstName  : "Bill",
    3   lastName   : "Gates",
    4   id         : 678,
    5   myFunction : function() {
    6     return this;  //[object Object]
    7   }

    上面中的 this 会自动绑定 person 这个对象,也就是说 this 是 person 对象 (person 对象是该函数的"拥有者")

    1 var person = {
    2   firstName: "Bill",
    3   lastName : "Gates",
    4   id       : 678,
    5   fullName : function() {
    6     return this.firstName + " " + this.lastName;  //Bill Gates
    7   }

    上面的, this.firstName 意味着 this (person)对象的firstName 属性,相当于 person.firstName.

    以上内容均在W3school 的 JS this 专题有讲解,参考地址:https://www.w3school.com.cn/js/js_this.asp

  • 相关阅读:
    13.Convert BST to Greater Tree(将树转为更大树)
    13.调用数组顺序使奇数位于偶数前面
    12.数值的整数次方
    11.二进制中1的个数
    12.Hamming Distance(汉明距离)
    11.Find All Numbers Disappeared in an Array(找出数组中缺失的数)
    10.Find All Anagrams in a String(在一个字符串中发现所有的目标串排列)
    垃圾收集器与内存分配策略---垃圾收集器
    线程之间的协作
    1287. Mars Canals(DP)
  • 原文地址:https://www.cnblogs.com/ljfsmile0613/p/13183828.html
一二三 - 开发者的网上家园