zoukankan      html  css  js  c++  java
  • js 面试题总结

    面试题解析

    window.number = 1;
    var obj = {
        number: 4,
        dbl: (function(){
            console.log(obj.number);
            this.number *= 2;
            console.log(obj.number);
            return function () {
                this.number *= 2;
            }
        })()
    }
    var dbl = obj.dbl; 
    dbl();
    obj.dbl();
    console.log(window.number);
    console.log(obj.number);
    

    关键是this的指向问题,在 this 有所属对象时就指向所属对象,没有所属对象就指向全局对象。

    全体代码有两个作用域

    • 全局作用域 number 、 obj

    • 局部作用域 obj.nujber 、 obj.dbl

        var dbl = obj.dbl; 
      
    • obj.dbl 为立即执行函数

    • window.number = 1 * 2 = 2

    • 执行结果为一个匿名函数

    • function () { this.number *= 2; }

        dbl();
      
    • this ==> window

    • window.number = 2 * 2 = 4

        obj.dbl();
      
    • this ==> obj

    • obj.number = 4 * 2 = 8

        console.log(window.number);
      
    • 执行结果为 window.number = 4

        console.log(obj.number);
      
    • 执行结果为 obj.number = 8

    所以结果为 4,8

  • 相关阅读:
    js数组和数组去重的几种简单的方法
    nodejs项目的model操作mongo
    canvas画布
    bson
    神奇的东西
    sql与nosql
    mong大牛的blog
    mongo 增删改查
    Mongo配置基础
    session放数据库里解决丢失的问题
  • 原文地址:https://www.cnblogs.com/lvyongbo/p/9938114.html
Copyright © 2011-2022 走看看