第六章 对象

  • P123 在ES3中,点运算符后的标识符不能是保留字。如果一个对象的属性名是保留字,name必须使用方括号的形式访问它们,如o["for"]和o["class"]。ES5可以在点运算符后直接使用保留字。
  • P123 JS对象都是关联数组:数组元素通过字符串索引而不是数字索引,也称散列、映射或字典。
  • P141 JSON.stringify(o);//序列化 JSON.parse(o);//还原 同时使用用于深拷贝

第七章 数组

  • P146 非负整数索引被当做数组索引,其他被当做对象属性。数组索引仅是对象属性名的一种特殊形式,这意味着JS数组没有"越界"错误的概念。查询不存在属性返回undefiend。

    a[-1.23] = true;//创建名为“-1.23”的属性
    a["1000"] = 0;//数组的第1001个元素
    a[1.000]//等价于a[1]
  • P147 足够稀疏的数组通常在实现上比稠密的数组更慢、内存利用率更高,在这样的数组中查找元素的时间与常规对象查找时间一样长。为什么?

    ​ 在数组直接量中省略值时部位稀疏数组。省略值为undefined。可用in操作符监测两者区别:

    a1 = [,,,];
    a2 = new Array(3);
    0 in a1;//true,a1在索引0处有一个元素undefiend,测试为false,省略值不存在 嗯?
    0 in a2;//false
  • P161 类数组对象

第八章 函数

  • p173 函数定义中使用注释optional来强调形参是可选的。

  • P174 通过实参对象(不是数组)arguments[num]获得传入的实参,length属性获得实参个数。可变长实参列表:

    /*可变长实参列表,返回最大值为例:*/
    function max(/*...*/){
    var max = Number.NEGATIVE_INFINITY;
    //遍历实参,查找并记住最大值
    for(var i = 0; i < arguments.length; i++)
    if (argument[i] > max) amx = argument[i];
    return max;
    } var largest = max(1,1000,2,5000,4,5,6); // =>5000
  • P176 可将对象属性用作实参,为了实参不必按照顺序。

  • P182 闭包

    var scope = "gloval scope";	//全局
    function checkscope(){
    var scope = "local scope"; //局部
    function f(x){ return scoped; }
    return f;
    }
    checkscope()() //返回"local scope"

    词法作用域基本规则:JS函数的执行用到了作用域链,这个作用域链是函数定义的时候创建的。嵌套的韩式f(x)定义在这个作用域链里面,其中的变量scope一定是局部变量,不管在何时何地执行f(),这种绑定在其执行时依然有效。

    Js词法作用域规则

    1、函数允许访问函数外的数据

    2、整个代码结构中只有函数可以限定作用域

    3、作用域规则首先使用提升规则分析

    4、如果当前作用域中有了该变量, 就不考虑外面的同名变量

  • P187 闭包 循环创建多个闭包,试图将循环代码移入定义这个闭包的函数内,它们共享变量i:

    function constfuncs(){
    var funcs = [];
    for(var i = 0; i < 10; i++){
    funcs[i] = function(){return i;}
    }
    return funcs;
    } var funcs = constfuncs();
    console.log(funcs[5]()) //返回10而不是5
  • P193 Function()构造函数

    • 创建的是一个匿名函数;
    • 允许JS在运行时动态地创建并编译函数;
    • 每次调用都会解析函数体,并创建行动函数对象。在循环或多次电泳中执行构造函数,执行效率回受影响;
    • 它创建的函数不是使用词法作用域,相反,函数体编译总是在顶层函数(全局)执行。
  • P196 高阶函数

  • P197 不完全函数

  • P199 记忆:牺牲空间换时间,缓存计算结果。

最新文章

  1. Spark作业调度阶段分析
  2. Understanding the Uncertain Geographic Context Problem
  3. MySQL Python教程(3)
  4. CKEditor与CKFinder的配置
  5. openlayers加载地图没有图片时有红叉的解决方法
  6. golang实现ios推送
  7. 欧几里德&amp;扩展以及求解线性方程学习总结--附上poj1061解题报告
  8. 【工具】NS2安装记录
  9. OCCI处理CHAR类型字符串变量的不同
  10. eclipse慢 优化(转)
  11. 使用 APPLY
  12. 查询SQL中某表里有多少列包含某字段
  13. Java面向对象的特征
  14. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
  15. C/C++中的内存对齐问题和pragma pack命令详解
  16. js实现软键盘
  17. Socket编程,SocketServer模块
  18. Light OJ 1020
  19. 纯HTML和CSS实现JD轮播图
  20. Mustache模板引擎

热门文章

  1. JavaScript中的变量在内存中的具体存储形式
  2. Linux centosVMware Vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、vim一般模式下复制、剪切和粘贴
  3. JDBC--利用反射及JDBC元数据编写通用的查询方法
  4. 输入、输出(iostream)
  5. 尝试使用 Visual Studio Online (Cloud IDE)
  6. iterm2常用快捷键
  7. ROS-4 : ROS节点和主题
  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:&quot;text-primary&quot; 类的文本样式
  9. Matplotlib 教程
  10. SciPy 积分