第一部分 JavaScript语言核心(三)

第六章 对象

  • 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、如果当前作用域中有了该变量, 就不考虑外面的同名变量

原文地址:https://www.cnblogs.com/dxy9527/p/12179372.html

时间: 2024-10-10 12:58:47

第一部分 JavaScript语言核心(三)的相关文章

第一章:Javascript语言核心

本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 本章之后,我们将主要关注javascript的基础知识.第二章我们讲解javascript的注释,分号和unicode字符集:第三章会更有意思,主要讲解javascript的变量和赋值 这里有一些实例代码说明前两章的重点内容. <script type="text/javascript"> //双斜杠之后之后的内容都于属于注释 //仔细阅读这里的注释,它将会对javascript代码做解释 // 变

使用Firebug或chrome-devToolBar深入学习javascript语言核心

使用Firebug和chrome-devToolBar调试页面样式或脚本是前端开发每天必做之事.这个开发神器到底能给我们带来哪些更神奇的帮助呢?这几天看的一些资料中给了我启发,能不通过Firebug和chrome-devToolBar发现JS的全局对象的全部属性呢?能不能发现document对象中含有哪些不常用而又需要深刻理解的属性呢? 我们在此开8! 一.浅析for-in语句 for-in循环也被称为“枚举”,用在非数组对象的遍历上,这个语句可以返回对象中的属性或属性对应的值. 从技术上将,你

JavaScript语言核心

ECMAScript:是一套标准.核心,定义规范.语法.数据类型.基本对象.关键字 … HTML标签类型:block.inline.inline-block.table...... 类型可以让我们分辨不同类型的标签知道给它定义什么样式.比如block类型可以设置宽高. JavaScript中的数据类型: /* 根据typeof 来划分数据类型: number(NaN).string.function.boolean.object(obj.文档中的元素.[].{}.null).undefined(

JavaScript语言核心之词法结构

编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分割的等规则. 1.1字符集 JavaScript程序是用Unicode字符集编写的.至于Unicode字符集,目前虽然查过一些资料,但是至今对UTF-8.UTF-16还是晕菜,也没搞懂一个汉字到底占几个字节的问题,所以这里就不做介绍了(就当埋坑了,以后搞懂了再做介绍吧).至于计算js中一个字符串所在字节数,曾查到如下实现代码: 1 /** 2 *

JavaScript语言核心(一)-- prototype

类似C++强类型的静态语言中,类型 决定了 值具备的属性及method.设计好的类型在running的过程中,无法变更 JavaScript弱类型 动态语言中没有 class 即 语言中是"没有类型",对象的类型 是由运行过程中的值决定. 本类型不具备的方法借用其他类型的方法 扩展其他类型 字符串类型 不具备join方法,但可以借用 其他类型 Array中的方法 let str = 'foo'; var res = Array.prototype.join.call(str,'-');

JavaScript语言核心—One Day

字符串的使用 除了length属性,字符串还提供了以下可以调用的方法: var z = "hello cnblogs";    //定义字符串 z.charAt(0);                //返回 h 第一个字符 z.charAt(z.length-1);       //返回 s 最后一个字符 z.substring(1,4);           //返回 ell 返回字符2~4 z.slice(1,4);               //返回 同上 z.slice(-

JavaScript语言核心—The Next Day

JavaScript中的valueOf()与toString() [1] toString() 方法把一个逻辑值转换为字符串,并返回结果. [2] valueOf() 返回指定对象的原始值. var m = ['1','2','3']; m.valueOf();              //返回 ['1','2','3'] m.toString();             //返回 1,2,3 toString()与valueOf()方法属于Object对象,由于所有的对象都继承了Objec

JavaScript权威设计--JavaScript语言核心(简要学习笔记一)

//对象名/值得映射 var book={ top:"a", fat:true } //访问对象属性 book.top book["fat"] //通过赋值创建一个新属性 book.dou="v"; //数组 var p=[1,2,3]; p[3]=4;//通过赋值来添加新元素 p[3]=5;//通过赋值来改变已有的元素 //函数是一种值,可以赋值给变量 var sp=function(x){ return x*x; }; //按照惯例,构造函数

javascript数据类型(三)--- 对象

一.对象 对象是一种复合值,他将很多值(原始值或者其他对象)聚合在一起,可以通过名字访问这些值.对象也可以看做是属性的无序集合,每个属性嗾使一个名/值对.属性名是字符串,因此我们可以吧对象看做是从字符串到值的映射. 对象最常见的用法是创建(create).设置(set).查找(query).删除(delete).检测(test)和枚举它的属性.一下将分别介绍. 1.1 创建对象 创建对象可以通过对象直接量.关键字new和Object.create()函数来创建对象 1.1.1 对象直接量 创建对