/*
*    == 进行比较的时候,如果左右两边数据类型不一样,则先转换为相同的数据类型,然后在进行比较
*      1、{} == {} false 两个数据进行比较,比较的是堆内存的地址
*      2、null == undefined true | null === undefined false
*      3、NaN == NaN false NaN 和谁都不相等
*      4、[12] == "12" 对象和字符串比较,是把对象 toString() 转换为字符串之后再进行比较的
*      5、剩余所有情况在进行比较的时候,都是转换为数字(前提数据类型不一样)
*      对象转数字:先转换为字符串,然后在转换为数字
*      字符串转数字:只要出现一个非数字字符,结果就是 NaN
*      布尔转数字: true -> 1 false -> 2
*      null 转数字:0
*      undefined 转数字:NaN
*
*      [12] == true --> Number([12].toString()) == 1 => false
*      [] == false --> 0 == 0 => true
*      [] == 1 --> 0 == 1 => false
*
* ---------------------------------------------------
 
*/
// 一、=> 对象和数字比较:先把对象 .toString() 变为字符串,然后再转换为数字
  var a = {
    n: 0,
    //=> 私有的属性方法
    toString: function () {
      return ++this.n;
    }
  };
//a.toString(); //=> 此时调用的就不再是 Object.prototype.toString 了,调用的是私有的
  if (a == 1 && a == 2 && a == 3) {
    console.log('yes!')
  }
// 二、 => shift:删除数组第一项,把删除的内容返回,原有数组改变
  let a = [1, 2, 3];
  a.toString = a.shift;
  if (a == 1 && a == 2 && a == 3) {
    console.log('yes!')
  }
/*
*    ES6 中新增加的一些方法
*      String.fromCharCode([n]) <=> "z".charCodeAt()
*      Array.from()
*     Array.isArray()
*       Object.create([Obj])
*         Object.defineProperty()
*/
// 三、 => Object.defineProperty 监听当前对象某个属性的各种情况
    Object.defineProperty(window, 'a', {
      get: function () {
        this.value ? this.value++ : this.value = 1;
        return this.value;
      }
    });
    if (a == 1 && a == 2 && a == 3) {
      console.log('yes!')
    }

如何让a==1&&a==2&a==3成立的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  2. C# 在腾讯的发展

    本文首发我的微信公众号"dotnet跨平台", 内容得到大家热烈的欢迎,全文重新发布在博客,欢迎转载,请注明出处. .NET 主要的开发语言是 C# , .NET 平台泛指遵循EC ...

  3. Linux 内核概述 - Linux Kernel

    Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...

  4. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  5. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  6. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  7. 设计爬虫Hawk背后的故事

    本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...

  8. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  9. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  10. 虾扯蛋:Android View动画 Animation不完全解析

    本文结合一些周知的概念和源码片段,对View动画的工作原理进行挖掘和分析.以下不是对源码一丝不苟的分析过程,只是以搞清楚Animation的执行过程.如何被周期性调用为目标粗略分析下相关方法的执行细节 ...

随机推荐

  1. linux的用户管理、组管理

    用户管理:centos系统是一个多用户系统 用户分为三类: 超级用户(root) 用户id为 0 伪用户 用户id为1-499,虽然存在,但是不能用户登录 普通用户 用户id为500-60000 用户 ...

  2. 【Hadoop离线基础总结】linux的shell编程

    linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...

  3. [java作业]Fan、求直线交点、Triangle2D、选课

    public class Fan { public static void main(String[] args) { Fan fan1 = new Fan(), fan2 = new Fan(); ...

  4. [hdu5445 Food Problem]多重背包

    题意:一堆食物,有价值.空间.数量三种属性,一些卡车,有空间,价格,数量三种属性.求最少的钱(不超过50000)买卡车装下价值大于等于给定价值的食物,食物可以拆开来放. 思路:这题的关键是给定的条件: ...

  5. Luogu P5603 小C与桌游【贪心+拓扑排序】

    [Description]https://www.luogu.com.cn/problem/P5603 \(\;\) 题意可以简化为:一个不保证联通,n个点,m条边的DAG(有向无环图),构造一个拓扑 ...

  6. fragment hide/show 生命周期

    Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先 All subclasses of Fragment must include a public empty co ...

  7. jbpm4.4 timer的使用

    今天学习了jbpm4 的timer使用,一直测试都不成功:配置如下: <?xml version="1.0" encoding="UTF-8"?> ...

  8. assign 与 深浅拷贝

    Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖.后面的源对象的属性将类 ...

  9. Spring AOP实现接口验签

    因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...

  10. vue-cli搭建vue项目

    1 安装node,npm  npm i node npmnode -v npm -v 2 查看webpack版本,这里要注意,webpack如果为4.0,可能不兼容vue-cli 先卸载 npm un ...