zoukankan      html  css  js  c++  java
  • 关于this

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>关于this</title>
    </head>
    <body>
    <div id="box"></div>
    <script>
    //this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this最终指向的是那个调用他它的对象(这句话有点误差,但是绝大多数情况下符合)
    // 情况一:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,(严格模式中的this指向的不是window)
    // 情况二:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象.
    // 情况三:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一届的对象.
    //当this遇到return,如果返回值是一个对象(null除外),那么this指向的就是那个返回的对象,如果返回值不是一个对象,那么this指向函数的实例。
    //实例一:
    function fn1() {
    this.user = "aaa";
    return {};
    }
    var a = new fn1
    console.log(a.user) //undefined
    //实例二:
    function fn2() {
    this.user = "aaa";
    return function () {
    };
    }
    var b = new fn2
    console.log(b.user) //undefined
    //实例三:
    function fn3() {
    this.user = "aaa";
    return 1;
    }
    var c = new fn3
    console.log(c.user) //aaa
    //实例四:
    function fn4() {
    this.user = "aaa";
    return undefined;
    }
    var d = new fn4
    console.log(d.user) //aaa
    //实例五:
    var f = {
    user:"bbb",
    age:2
    }
    function fn5() {
    this.user = "aaa";
    return f;
    }
    var e = new fn5
    console.log(e.user) //bbb

    var o = {
    a:10,
    b:{
    a:12,
    fn:function () {
    console.log(this.a)
    }
    }
    }
    o.b.fn() //12
    </script>
    </body>
    </html>
  • 相关阅读:
    [LeetCode] Wildcard Matching, Solution
    [LeetCode] Add Binary 解题报告
    [LeetCode] Validate Binary Search Tree 解题报告
    [LeetCode] ZigZag Conversion 解题报告
    [LeetCode] Best Time to Buy and Sell Stock II Solution
    [LeetCode] Anagrams 解题报告
    [LeetCode] Word Search 解题报告
    【转载】git/github初级运用自如
    关于实训的那点事儿
    【转载】解决git Push时请求username和password,而不是sshkey验证
  • 原文地址:https://www.cnblogs.com/kaw19950302/p/7599350.html
Copyright © 2011-2022 走看看