文章目录

1、+ 运算符的注意点
“+”运算符的转换原则优先考虑字符串连接
注:当加号运算符与字符串和数字一起使用的时候,需要优先考虑加法的结合性的对运算顺序的影响,即运算结果依赖于运算符的运算顺序
eg:
1 + 2 + “ girl”; //“3 girl”
1 + (2 + “ girl”); //“12 girl”

2、toString()与valueOf()的区别
(1)当需要进行类型转换的时候会首先调用valueOf(),再尝试使用toString(),日期类对象例外,日期对象只使用toString()转换

3、delete运算符
(1)通过var语句声明的变量不能通过delete删除;通过function语句定义的函数和函数参数也不能删除
(2)在ES5中只有操作数是一个属性访问表达式的时候才会正常工作
(3)delete运算符只能删除自有属性,不能删除继承属性
(4)delete操作并不影响数组长度,只会将其变成稀疏数组

4、函数声明
脚本中的所有函数和函数中所有嵌套的函数都会在当前上下文中其他代码之前声明,即可以在声明一个函数之前调用它

5、continue与break、return
(1)continue与break是javascript中唯一可以使用语句标签的语句
(2)continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代
(3)break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)

6、创建对象的方法
(1)var o = {};
(2)var o = new Object();
(3)var o = Object.create(Object.prototype);
注;可以通过给Object.create()传入null来创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西,甚至不包括基础方法,比如toStrig()
//通过原型继承创建新对象
inherit(p)返回一个继承自原型对象p的属性的新对象
function inherit(p) {
if(p == null) throw TypeError();
if(Object.create){
return Object.create(p);
}
var t = typeof p;
if(t !== “object” && t !== “function”) throw TypeError();
function f() {};
f.prototype = p;
return new f();
}

7、如果一个对象的属性名是保留字,则必须使用方括号的形式访问他们

8、ECMAScript5中的对象存取器属性:getter和setter
javascript权威指南P132,http://sentsin.com/web/20.html

9、检测一个对象是否是另一个对象的原型(或处于原型链中),可使用isPrototypeOf()方法
eg: p.isPrototypeOf(o); //检测p是否是o的原型

10、ES3中的isArray()
var isArray = Function.isArray || function(o){
return typeof o === “object” && Object.prototype.toString.call(o) === “[object Array]”;
}
ES5中的Array.isArray()函数

文章目录