美文网首页
前端面试总是跳坑的那几道题

前端面试总是跳坑的那几道题

作者: cooqi | 来源:发表于2017-08-22 11:04 被阅读0次

面试前做几道面试题:有几道是以往面试都出现过,但是每次都掉进坑里的题
今天请教大神给梳理了一遍

第一题:

大神说

记住一点就行了。如果在实例上找不到方法,才会去原型链找,原型链里的this全部指向实例
但如果有return就要注意了
1.return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。
这种情况下,忽视return值,依然返回this对象。
2.return的是Object。
这种情况下,不再返回this对象,而是返回return语句的返回值。

   function fn() {
        this.a = 0;
        this.b = function() {
            alert(this.a)
        }
    }
    fn.prototype = {
        b: function() {
            this.a = 20;
            alert(this.a);
        },
        c: function() {
            this.a = 30;
            alert(this.a);
        }
    }
    var myfn = new fn();
     myfn.b();//0
     myfn.c();//30
     myfn.b();//30

第二题:

function fun(n,o) {
console.log(o)
 return {
    fun:function(m){
      return fun(m,n);
    }
  };
}
var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);

第二道题,以 c 为例吧。
fun 的返回值是一个 object,其中有一个属性叫 fun,对应一个 function。
由于只传入一个参数,所以 fun(0) 先输出 undefined,然后返回:
{
fun: function(m) {
return fun(m, 0)
}
}
其中 fun(m, 0) 中的 fun 就是外面定义的 function fun(n, o)。这其实是一个递归。
注意这时是在调用 fun(1, 0),即 n 是 1,o 是 0,因此,就会先输出 0,然后得到 fun 函数的返回值,就是上面说的那个有一个属性叫 fun,对应一个 function 的 object:
{
fun: function(m) {
return fun(m, 1) // 这里的 1 是 n
}
}
这就是 c 变量了。它是一个 object,有一个 fun 属性。
这时候对 c 调用 .fun(2),就是在调用 fun(2, 1)。所以输出 1。
调用 c.fun(3),就是在调用 fun(3, 1)。所以还是输出 1

第二道题我自己梳理了下

a=fun(0) a.fun(1) a.fun(2) a.fun(3)
undefined fun(1,0) fun(2,0) fun(3,0)
0 0 0
b= fun(0) .fun(1) .fun(2) .fun(3)
undefined fun(1,0) fun(2,1) fun(3,2)
0 1 2
c=fun(0) .fun(1) c.fun(2) c.fun(3)
undefined fun(1,0) fun(2,1) fun(3,1)
0 1 1

相关文章

  • 前端面试总是跳坑的那几道题

    面试前做几道面试题:有几道是以往面试都出现过,但是每次都掉进坑里的题今天请教大神给梳理了一遍 第一题: 大神说 记...

  • 前端面试的经典题

    前端面试的经典题 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 Javascript...

  • 前端面试的难题和怪题

    前端面试的难题和怪题 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 函数 答案 Er...

  • 几道高级前端面试题解析

    几道高级前端面试题解析

  • 2019-10-16 基础 面试题

    面试的几道题分享给大家 答案

  • 前端面试概念收集器

    前端面试概念收集器 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 本文分为 概念,原...

  • Java面试必备:吊打面试官的21道面试题

    Java面试必备:吊打面试官的21道面试题 前面有一期讲过一些Java的面试题,这一期我们再讲几道题,会了这几道题...

  • 考试后感

    考场上 开始看整套题 简答题 嗯,会几道,有几道忘了 大题 这是啥,算了,一会儿来编吧 选择题 先写会的,不会的跳...

  • 再看一眼class方法

    来做几道面试题 第一题: MyObject *myObject = [[MyObject alloc] init]...

  • 初来乍到(一)

    最近刚刚入了前端的坑,准备面试中,打算把自己遇到的、不会的题,整理一下,比较杂,遇到啥就记啥了,答案都是从其它大神...

网友评论

      本文标题:前端面试总是跳坑的那几道题

      本文链接:https://www.haomeiwen.com/subject/mkgkdxtx.html