zoukankan      html  css  js  c++  java
  • #啃underscore源码 一、root对象初始化部分

    最近由于比赛要交了,以及工作室屯了各种项目,实在忙不过来刷题,所以很久没更blog了(良心痛),现在自己的水平还是渣代码堆砌 + 简单的增删改查(悲伤)

    所以痛定思痛,决定之后的任务是先补学校课堂的知识(已经很久没有好好学习了),然后业余时间选择读一些源码&涉猎一些不同的应用场景(多看一点github项目)&刷题

    所以开始了本月第一弹underscore源码解析部分


    第一行代码:
    var root = typeof self == 'object' && self.self === self && self || 
              typeof global == 'object' && global.global === global && global ||
              this ||
              {};
    

    **问题: self是什么, self.self是什么, 有什么用?**
    1. 首先,self即是window.self,self变量在IIFE中没有声明,所以向上寻找,访问window对象。

      在MDN中,知道

      • window.self是“返回一个指向当前 window 对象的引用。”
      • window.self几乎总是用于下面示例那样的比较,用来判断当前 window 是不是父 frameset 中的第一个 frame。
      if (window.parent.frames[0] != window.self) {
          // 当前对象不是frames列表中的第一个时
       }
      

      应用: 我们总是能看到有网站左右两边挂了一些“不可描述”的图,用F12发现,他们基本上都是有一个iframe标签包裹,这种现象有可能是网站被劫持了。所以通过window.self的判断可以判断网站是不是被劫持

    2. self.self

      对于web页面,在默认情况下,以下4个写法都是相同的

      window === self                  // true
      window.window === window.self    // true
      window.self === self             // true
      window.window === self           // true
      

      通过这个判断来判断是不是浏览器环境

    同理,global是node环境下对全局对象的引用,类似于第一句,是进行node环境的判断


    收获:

    1.比三目运算符更酷炫的赋值操作

    var tmp = 条件1 && 条件2 && 条件3 && 目标值
    

    2.知道了window.self的存在


    参考网站:

    https://juejin.im/entry/59b23dfe6fb9a0248e5cf724

    http://www.zhangxinxu.com/wordpress/2017/07/js-window-self/

  • 相关阅读:
    POJ 3007 Organize Your Train part II (字典树 静态)
    POJ 3096 Surprising Strings
    移动APP安全测试
    monkey亲测
    PHP笔记
    my sql 只展示 前10条数据的写法
    面试问的东西
    定时构建常用 设置
    jenkins 定时构建 位置
    jenkins 使用的python 不是指定的python 的解决方法
  • 原文地址:https://www.cnblogs.com/kiznaiver1998/p/8831877.html
Copyright © 2011-2022 走看看