日期:2014-05-16  浏览次数:20341 次

javascript_core阅读笔记(二)
本系列内容是阅读javascript_core的笔记,原文见http://abruzzi.iteye.com/

7.关于===操作符
如果操作数的类型不同,则不进行值的判断,直接返回false
如果操作数的类型相同,分下列情况来判断:
都是数字的情况,如果值相同,则两者等同,否则不等同
都是字符串的情况,如果串的值不等,则不等同,否则等同
都是布尔值,且值均为true/false,则等同,否则不等同
如果两个操作数引用同一个对象(数组,函数),则两者完全等同,否则不等同
如果两个操作数均为null/undefined,则等同,否则不等同

8.在顶级作用域中声明的变量将作为全局对象的属性被保存,从这一点上来看,变量其实就是属性。比如,在客户端
var v = "global";

实际上相当于
window.v = "global";


9.JavaScript本身是基于原型的,每个对象都有一个prototype的属性。这个prototype本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。
访问一个属性的时候,解析器从下向上地遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null的对象(JavaScript的基对象Object的构造器的默认prototype有一个null原型),如果此对象仍没有该属性,则返回undefined

10.在javascript中,this表示当前上下文,即调用者的引用

11.对象的声明有三种方式:
通过new操作符作用于Object对象,构造一个新的对象,然后动态的添加属性,从无到有的构筑一个对象。
定义Function,然后使用new操作符来批量的构筑新的对象。
使用JSON构造新的对象

12.函数本身也是对象
function p(){
    alert("hello world");
}
p.id = "func";
p.type = "function";