重温 Javascript:The Definitive Guide 的笔记

##此笔记按时候逆序排序 !!

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);
}
    原文作者:lenville
    原文地址: https://segmentfault.com/a/1190000000391324
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞