• #啃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/

  • 相关阅读:
    Lua Coroutine详解
    Lua IO库详解
    vue 组件基本使用
    js 发送异步请求
    小程序保存图片到相册
    js 学习四 对象应用 吃货游戏
    js 学习三 Array
    js 学习二 字符串常用方法
    js 学习一 猜数字游戏
    phpmyadmin导入大容量.sql文件
  • 原文地址:https://www.cnblogs.com/kiznaiver1998/p/8831877.html
Copyright © 2020-2023  润新知