zoukankan      html  css  js  c++  java
  • 自言自语WEB前端面试题(二)

    今天换道题,新鲜出炉的

    var Model=function(){
      this.name='lilei';
      this.age=20;
    }
    Model.prototype.say=function(){
      console.log(this.name);//①
      console.log(this.getFullName());//②
      function test(){
        console.log(this.name);//③
        console.log(this.getFullName());//④    
      }
      test();
    }
    Model.prototype.getFullName=function(){
      return this.name+'';
    };
    var m=new Model();
    m.say();

    哇,这个题乍一看有点绕。我们可以简单的分析一下

    首先我们先注意下这段代码主要做了什么:

    创建一个构造函数Model,利用Model去构建m对象

    构造函数原型对象定义了两个函数, say 和 getFullName 

    m调用 say 函数 ,其中 say 函数内的 this 此时指向对象 m 

    m有两个属性 name 和 age 所以 ① 输出 lilei

    调用getFullName函数的是say中的this 根据上下文 他应该是m

    函数内在最后返回了一个 this.name+'' 这个时候根据上下文 

    this指向依然是m JavaScript的链式调用在这里也有一些体现

    所以②输出内容为 lilei

    当test在say函数内声明 并且调用时,我们只需要关注一件事

    调用test的是谁 如果没有任何指示,他的上下文就是window

    那③ 输出结果就是window.name 它默认是个空字符串

     ④这里会直接报错,因为window内不存在getFullName函数 

    正确的输出结果是:

    ——————end——————

    这几天在做活动,后面可能要进入正式开发的流程了

    最近真的闲的长毛了,虽然还挺爽,但是长期不正经开发工作很容易懒惰的

    加了个油~~

    Learn to walk before you run.
  • 相关阅读:
    [Luogu] 借教室
    [Luogu] 子共七
    [Luogu] 让我们异或吧
    【bzoj1030】[JSOI2007]文本生成器
    HDU3068 最长回文
    【bzoj2342】[Shoi2011]双倍回文
    【NOIP2012】借教室
    HDU2203 亲和串
    【POJ2001】Shortest Prefixes
    vodevs3031 最富有的人
  • 原文地址:https://www.cnblogs.com/liyx-jsfe/p/8535655.html
Copyright © 2011-2022 走看看