码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript面试题&知识点汇总

时间:2019-12-26 10:07:09      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:htm   return   logs   win   shift   get   define   调用   question   

问题&答案

什么时候 a ==1 && a== 2 && a==3 为 true?

  var a = {
          i: 1,
          toString: function () {
              return a.i++;
          }
      }
  • 关键点在于==在比较的时候会进行类型转换,上例会调用a.valueOf(a.toString())来将a转换成Number数据类型,因此改写a的toString方法即可。
  var a = [1,2,3];
  a.join = a.shift;
  • 同样的数组a在进行类型转换的时候会调用toString()的方法,而a.toString()其实调用的是a.join(‘‘)方法,因此修改a.join方法使其指向shift方法让其每次只输出第一个值,并且输出后从数组移除即可。
  var val = 0;
  Object.defineProperty(window, 'a', {
    get: function() {
      return ++val;
    }
  });
  • 使用Object.defineProperty()方法为window添加a属性,修改其getter方法,使其依次返回val变量值。

参考资料

  1. 前端开发面试题
  2. 2019寒冬中的深圳前端面试分享(附笔试题)。
  3. Web前端常见面试题汇总
  4. 深入浅出Object.defineProperty

结束语

尺蠖之屈,以求信也;龙蛇之蛰,以存身也。与时屈伸。柔从若蒲苇,非慑怯也;刚强猛毅,靡所不信,非骄暴也。

Javascript面试题&知识点汇总

标签:htm   return   logs   win   shift   get   define   调用   question   

原文地址:https://www.cnblogs.com/zenronphy/p/12100066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!