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>
  • 相关阅读:
    ajax异步服务器获取时间
    JavaScript基本知识
    JavaScript使用button提交表单
    spring与hibernate整合
    Spring的事务属性
    注解方式实现Spring声明式事务管理
    svn的安装使用
    sbn
    恢复oracle中误删除drop掉的表
    ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes的解决办法
  • 原文地址:https://www.cnblogs.com/kaw19950302/p/7599350.html
Copyright © 2011-2022 走看看