`

javascript_core阅读笔记(三)

阅读更多
本系列内容是阅读javascript_core的笔记,原文见http://abruzzi.iteye.com/

13.javascript中的函数对参数的处理十分灵活,可以传递任意数量的参数给一个function
function sum() {
    var result = 0;
    for ( var i = 0; i < arguments.length; i++) {
        var current = arguments[i];
	if (isNaN(current)) {
	    throw new Error("not a number exception");
	} else {
	    result += current;
	}
    }
    return result;
}
alert(sum(1, 2, 3, 4));
alert(sum(5, 6));
alert(sum(1, 2, "ky"));

14.在执行一个函数时,函数的参数和局部变量会作为调用对象的属性进行存储。同时,解释器会为函数创建一个执行器上下文(context),与上下文对应的是作用域链,通常实现为一个链表,链表的每项都是一个对象。在全局作用域中,该链中有且只有一个对象,即全局对象。在一个最外层函数中,作用域链上会有两个对象,第一个是调用对象,第二个为全局对象。如果函数需要用到某个变量,则解释器会遍历作用域链。
作用域链随着嵌套函数的层次会变的很长,但是查找变量的过程依旧是遍历作用域链,自下而上查找,直到找出该值。如果遍历完作用域链仍然没有找到对应的属性,则返回undefined

15.Function.call()和Function.apply()用来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。apply的第二个参数为函数需要的参数组成的数组,而call则需要跟若干个参数,参数之间以逗号分隔

16.javascript的同一个数组中,可以有各种完全不同类型的元素

17.扩展数组和数组的遍历
Array.prototype.useless= function(){};
var arr = [ 1, 2, 3, 4, 5 ];
alert("length: " + arr.length);// 5
for ( var prop in arr) {
    alert(prop + ": " + arr[prop]);// 会输出useless
}
for ( var i = 0; i < arr.length; i++) {
    alert(arr[i]);// 不会输出useless
}

从这个例子可以看出,除非必要,尽量不要对全局对象进行扩展,因为对全局对象的扩展会造成所有继承链上都带上“烙印”,有时候会造成一些非常难以发现的BUG
分享到:
评论

相关推荐

    2_corejava_tiger.rar

    我有全手套的java相关技术的笔记,超级好。如: 1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    EXT_JS实用开发指南_个人整理笔记

    EXT_JS实用开发指南主要涵盖了EXT_JS框架的基础使用和核心组件,这是基于JavaScript的富客户端应用开发库,特别适合构建桌面级的Web应用。以下是对EXT_JS开发的一些关键知识点的详细解释: 1. **引入EXT_JS库**: ...

    EXT_JS实用开发指南_个人整理笔记.docx

    EXT_JS是一种基于JavaScript的富客户端应用开发框架,主要用于构建用户界面。这个开发指南主要涵盖了EXT_JS的基本使用方法和核心概念,对于入门EXT_JS的开发者来说是十分宝贵的资源。以下是EXT_JS的一些关键知识点:...

    EXTJS实用开发指南_个人整理笔记.pdf

    1. 底层API(Core):提供了对DOM操作、查询的封装、事件处理、DOM查询器等基础功能。 2. 控件(Widgets):提供了各种可视化组件,如面板、选项板、表格、树、窗口、菜单、工具栏、按钮等等。 3. 实用工具(Utils)...

    Discuz!_X2笔记.pdf

    7. **static**:图片、JavaScript等静态资源目录。 8. **template**:模板源文件目录,用于存放前端页面的模板文件。 9. **uc_client**:UCenter客户端接口目录,用于与UCenter服务器端进行通信。 10. **uc_server**...

    核心java笔记 corejava笔记

    ### 核心JAVA技术详细课堂笔记 #### 一、JAVA基础知识概述 1. **语言定义**:编程语言是由数据结构、算法、内存管理和操作系统及编译原理等几个方面构成的综合体系。 - **数据结构**:数据在内存中的存储形式,...

    vue_core:vue原始码学习笔记

    "vue_core:vue原始码学习笔记" 涉及到Vue.js的内部机制,包括观察员、编译和观察者(订阅者)等关键概念,这些都是理解Vue.js如何高效地响应式更新视图的关键。 首先,我们来深入探讨一下**观察员(Observer)**。...

    达内Java_笔记整理

    - `cat`与`more`:查看文件内容,`cat`一次性显示所有内容,`more`则分屏显示,便于阅读。 - `chmod`:修改文件或目录的权限。 #### 进程管理 - 进程与作业的关系,以及如何管理前后台进程。 - 使用`kill`命令终止...

    JAVA开发全套学习笔记整合Core Java Unix JSP HTML javascript Oracle HIbernate JSP EJB Spring AJAX Servlet

    Core Java Unix JSP HTML javascript Oracle HIbernate JSP EJB Spring AJAX Servlet JDBC OOAD UML CVS Struct笔记汇总,最初学者,开发者是一个很好的知识汇总复习参考资料

    Core Java心得笔记

    【Core Java心得笔记】主要涵盖了Java编程的基础及进阶知识,包括对象导向编程、类与对象、封装、继承、多态、接口、异常处理、集合框架、IO流、线程等核心概念。以下是对这些知识点的详细阐述: 1. **对象导向编程...

    达内云笔记源码

    在达内云笔记中,开发人员可能使用了.NET Core或.NET Framework来构建后端服务,因为它提供了丰富的类库和工具支持。 2. **C#编程语言**:.NET框架的主要编程语言是C#,它是一种现代、类型安全、面向对象的语言。在...

    Java_笔记整理

    ### Java_笔记整理 #### 知识点概览 本篇文档主要涵盖了Java学习过程中的核心知识点,并且涉及到了部分Linux/Unix基础知识。通过这份笔记,我们能够深入了解Java语言的基础特性、面向对象的设计原则以及一系列高级...

    c#,java,html,sqlsever记笔记软件

    学习HTML时,笔记可能包括各种标签的用法、布局技巧以及与CSS和JavaScript的配合使用。 SQL Server是微软公司的一款关系型数据库管理系统,用于存储、管理和检索数据。学习SQL Server,你需要掌握T-SQL(Transact-...

    Unix学习笔试,超级好,1_unix.rar

    我有全手套的java相关技术的笔记,超级好。如:1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    达内培训五个月以来的笔记:tarena_note

    达内培训五个月以来的笔记:tarena_note 包含以下十八个文档,系统的记录了达内五个月培训的整个过程,非常实用,推荐下载. 分数比较贵,不过物有所值. 01. Unix note.txt 02. SQL note.txt 03. PL SQL note.txt 04. ...

    自己学习总结的discuz x2笔记

    从给定的文件信息来看,这是一篇关于Discuz X2的学习笔记,主要涉及了Discuz X2在构建论坛网站时的关键代码结构、模块化设计以及相关资源的组织方式。以下是对这些知识点的详细解析: ### 一、关键代码结构 在`new...

    达内java笔记(corejava jdbc sql等等)

    这些"达内java笔记"涵盖了从基础到高级的各种主题,旨在帮助学习者深入理解Java编程的核心概念以及与之相关的技术栈。以下是对笔记中涉及知识点的详细解析: 1. **Core Java**:这是Java的基础,包括语法、数据类型...

    计算机软件编程学习笔记.rar

    计算机软件编程学习笔记: 01. Unix note.txt 02. SQL note.txt 03. PL SQL note.txt 04. CVS note.txt 05. Core Java exercise.txt 05. Core Java note.txt 06. OOAD & UML note.txt 07. Xml note.txt 08. JDBC ...

    xml学习笔试,超级好

    我有全手套的java相关技术的笔记,超级好。如: 1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

Global site tag (gtag.js) - Google Analytics