##此笔记按时间逆序排序 !!
ECMAScript 5 普及前 for in 的使用注意事项
for(p in o) {
if (!o.hasOwnProperty(p)) continue; // 跳过继承的属性
}
for(p in o) {
if (typeof o[p] === 'function') continue; // 跳过方法
}
创建新对象
var o1 = Object.create(Object.prototype);
var o1 = {};
var o1 = new Object();
二者都继承自Object
如果不继承任何东西
var o1 = Object.create(null);
对象继承函数
// 一致认为 Douglas Crockford 是最早提出用这种方法实现对象继函数的人
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();
}
with 语句
example: document.forms[0].address.value = "";
-> with(document.forms[0]) {
address.value = "";
}
Error
throw new Error("error message");
for in 循环只遍历 “可枚举” 属性
var 声明的变量是无法通过 delete 删除的
in 运算符 incetanceos 运算符
显式类型转换
Number类tostring()方法,可以接受表示转换基数(radix)的可选参数
toFixed()根据小数点后指定位数将数字转换为字符串
toExponential()使用指数记数法将数字转换为指数形式字符串
parseInt(string, [radix]) parseFloat()
引用类型
对象( 引用类型 reference type )
对象的比较均是引用的比较
良好习惯从我做起-定义全局Global
var global = this; // 客户端里由 window 代替
判断NaN
x != x 结果为true x 为 NaN
isNaN(x) 结果为true x 为 NaN 或非数字值
常用Math对象属性
Math.pow(2, 53) // 2的53次幂
Math.round(.6) // 四舍五入
Math.ceil(.6) // 向上求整
Math.floor(.6) // 向下求整
Math.abs(-5) // 求绝对值
Math.max(x, y, z) // 返回最大值
Math.min(x, y, z) // 返回最小值
Math.random() // 生成一个大于等于0小于1.0的伪随机数
Math.PI // 圆周率
Math.E // 自然对数的底数
Math.sqrt(3) // 3的平方根
Math.pow(3, 1/3) // 3的立方根
Math.sin(0) // 三角函数,还有Math.cos,Math.atan等
Math.log(10) // 10的自然对数
Math.log(100)/Math.LN10 // 以10为底100的对数
Math.log(512)/Math.LN2 // 以2为底512的对数
Math.exp(3) // e的三次幂
Debug Logger
function debug(msg) {
var log = document.getElementById("debuglog");
if (!log) {
log = document.createElement("div");
log.id = "debuglog";
log.innerHTML = "<h1>Debug Log</h1>";
document.body.appendChild(log);
}
var pre = document.createElement("pre");
var text = document.createTextNode(msg);
pre.appendChild(text);
log.appendChild(pre);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。