1.null与Object.prototype使用typeof操作符结果都是object,但他们都不是Object的实例。

typeof null  // object
null instanceof Object // false typeof Object.prototype // object
Object.prototype instanceof Object // false

理解:typeof是判断数据所属的类型,而instanceof判断一个对象是不是另一个‘类’的实例。(这是一句废话)所有的对象使用typeof运算返回object都不算错,我们可以认为一切皆是Object。但是,这没有什么意义;a instanceof C表示a是否是由C创造出来。显然Object是不能new一个null出来的。虽然Object.prototype是一个真正的object,但是,它也不是Object构造出来的。想想看,哪个构造器能构造自己的原型,而且原型是自函数产生那一刻便存在的。

2.在js中有些符号没有传递性以及数学上的可推导性。例如a<b,b<c;那么a<c。在js中未必成立

 true < '2' // true
'2' < 'a' // true
true < 'a' // false.不管怎么样都是false

结论:布尔值可以与数字(无论是Number还是String)比较大小,true为1,false为0;当至少有一边是非数字字符串时,如:'a','sed','2ws'......,另一边必须也是字符串,可以是数字的。如:'2','b'等。在与字符串做加法运算时,true能直接转换成'true'.

3.null与0的激情。直接看代码

null<0 //false
null == 0 // false
null > 0 // false null >=0 // true
null <=0 // true

文档:ECMASCRIPT-262有关<=或者>=规则最后一条是这样的:If r is true or undefined, return false. Otherwise, return true.而刚好r是false,结果就返回true了。但是>或者<而是这样的:If r is undefined, return false. Otherwise, return r.这不是null与0的激情,应该是>=与<=的乱伦。(我猜测是走到最后,由这条规则引起的。文档实在是羞涩)

4.不明白

function A(){}

var a = new A();

var b = A.prototype;

A.prototype = {}; // 为啥这句对下面结果有影响

console.log(a instanceof b.constructor);

已经明白。保存之前的原型,只是绕了一圈。b.construtor还是A。

5.instanceof的结果跟原型有关

function A(){}
function B(){} var ax = new A(); A.prototype = B.prototype = {}; var ay = new A(), b = new B(); ax instanceof A // false ay instanceof A // true b instanceof B // true 的确是B

6.最后贴几道题

//
var a = "123abc";
alert(a);
a.toString = function(){
return 1;
}
alert(a); //
alert(typeof Function.prototype);
alert(Object.prototype instanceof Function);
alert(Function.prototype instanceof Function); //
null == undefined
null >= undefined
null <= undefined //
function A(){
return {
toString:function(){return 2}
};
}
A.prototype.toString = function(){ return 3} var a = new A();
alert(a)

javascript那些不应该忽视的细节的更多相关文章

  1. C语言easy忽视的细节(第四部分)

    前言:本文的目的是记录C这些语言easy忽视的细节.我会每天花一点时间来阅读整理,坚持下去,今天是第一章.也许今天是下个月的第二,明年,今天是第几?--我坚信,,记性不如烂笔头.第四篇了.fight~ ...

  2. JavaScript 被忽视的细节

    语句/表达式 换个角度理解语句(statemaents)和表达式(expressions):表达式不会改变程序的运行状态,而语句会.还有一种叫做表达式语句,可以理解为表达式和语句的交集,如({a:1} ...

  3. Cordova插件中JavaScript代码与Java的交互细节介绍

    在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"--自定义插件.意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用 ...

  4. ajax容易忽视的细节

    用了很长时间的ajax,自己也写过原生ajax请求,但是发现自己对于ajax理解仍然非常肤浅. 1.ajax请求后,服务器会返回数据,返回头中content-type直接影响responseXML,r ...

  5. 【JavaScript】我的JavaScript技术总结第一篇——编程细节

    遍历数组 for (var i=0, l=arr.length; i<l; i++) 这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显. 判断变量的真假 if ...

  6. 学习vue容易忽视的细节

    1.对于自定义标签名(组件名称),Vue.js 不强制要求遵循 W3C 规则 (小写,并且包含一个短杠),尽管遵循这个规则比较好.HTML 特性是不区分大小写的.所以,当使用的不是字符串模板,came ...

  7. android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!

    android studio用了很久了,也不知道各位小伙伴有没有还在用eclipse的,如果还有,楼主真心推荐转到android studio来吧,毕竟亲儿子,你会知道除了启动速度稍微慢些,你找不到一 ...

  8. C#中容易被忽视的细节整理

    (有空更新系列) 1.params可变长度参数,默认值是长度为0的数组,而不是空 2.事件和委托默认值都是null 3.bool返回值的事件调用之后,其内部的合并方式是取最后一个合并对象的返回值

  9. [WPF 容易忽视的细节] —— x:Name与Name属性

    一.前言 WPF使用XAML来对界面进行编写,界面与后台逻辑分离.我们也可以写Style.Trigger来实现一些界面效果, 这些都是通过Name来定位控件的,例如Setter.TargetName. ...

随机推荐

  1. 我遇到了Hibernate异常

    真是郁闷,今天想用Hibernate的实现对数据库的增删查改,但是就是报异常不断啊!呵呵,为什么?就是在主键的问题上,我用主键的生成形式是:Sequence时就报IllegalArgumentExce ...

  2. <转>C++ explicit关键字详解

    要文转自:http://www.cnblogs.com/ymy124/p/3632634.html 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造 ...

  3. 推荐系统之矩阵分解及其Python代码实现

    有如下R(5,4)的打分矩阵:(“-”表示用户没有打分) 其中打分矩阵R(n,m)是n行和m列,n表示user个数,m行表示item个数 那么,如何根据目前的矩阵R(5,4)如何对未打分的商品进行评分 ...

  4. centos(7) 使用yum进行安装lamp环境

    1.用yum安装Apache,Mysql,PHP. 1.1安装Apache yum install httpd httpd-devel 安装完成后,用service httpd start 1.2 安 ...

  5. 浅析若干Java序列化工具【转】

    在Java中socket传输数据时,数据类型往往比较难选择.可能要考虑带宽.跨语言.版本的兼容等问题.比较常见的做法有: 采用java对象的序列化和反序列化 把对象包装成JSON字符串传输 Googl ...

  6. 【Linux】撷取命令cut

    什么是撷取命令啊?说穿了,就是将一段数据经过分析后,取出我们所想要的.或者是经由分析关键词,取得我们所想要的那一行! 不过,要注意的是,一般来说,撷取信息通常是针对『一行一行』来分析的,并不是整篇信息 ...

  7. Concurrency Managed Workqueue(四)workqueue如何处理work

    一.前言 本文主要讲述下面两部分的内容: 1.将work挂入workqueue的处理过程 2.如何处理挂入workqueue的work 二.用户将一个work挂入workqueue 1.queue_w ...

  8. Python tuple 函数

    描述 Python 元组 tuple() 函数将列表转换为元组. 语法 以下是 tuple 的语法: tuple( seq ) 参数 seq -- 要转换为元组的序列. 返回值 返回元组. 实例 以下 ...

  9. FPGA Prototyping By Verilog Examples第五章 状态机FSM设计

    上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...

  10. Disk performance

    http://blogs.msdn.com/b/ntdebugging/archive/2014/12/09/disk-performance-internals.aspx http://blogs. ...