`

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_...

    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笔记汇总,最初学者,开发者是一个很好的知识汇总复习参考资料

    java unix sping ajax struts hibernate 学习笔记

    Core Java 学习笔记 Tiger 学习笔记 XML 学习笔记 Oracle 学习笔记 JDBC 学习笔记 Hibernate 学习笔记 HTML&JavaScript 学习笔记 Servlet 学习笔记 JSP 学习笔记 Struts 学习笔记. Ajax 学习笔记 EJB 学习笔记 ...

    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. ...

    计算机软件编程学习笔记.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_...

    达内学习笔记全套

    这些是我在达内4个半月学习期间所有java开发的笔记,里面有很多精华的东西,《01. Unix note》、《02. SQL note》、《03. PL SQL note》、《04. CVS note》、《05. Core Java exercise》、《05. Core Java note》、...

    Three.js源码阅读笔记(基础的核心Core对象)

    这是第一篇笔记,先从最基础的核心(Core)对象开始。 Core::Vector2 该构造函数用来创建一个表示二维向量的对象 代码如下: THREE.Vector2 = function ( x, y ) { this.x = x || 0; this.y = y || 0; }

    java 笔记(自己整理的)

    我自己做的笔记 适合初学者 包含了 java se java web javascript EL core html css

    Java/JavaEE 学习笔记

    Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第...

    fckeditor学习笔记

    fckeditor学习笔记 FCKEditor的调用: 方法一:通过javascript调用(前提是在head里要引入&lt;script type="text/javascript" src="fckeditor/fckeditor.js"&gt;文件) 1.创建并输出一个编辑器(参见fckeditortest项目test1...

    达内java工程师培训笔记

    达内培训笔记,写得不错内容:CoreJava、Oracle、Servlet、JSP、javascript、AJAX、JDBC、HTML、 Struts1、Hibernate、Spring、EJB、XML、分页、购物车

    达内全套培训笔记

    这是我在达内培训的时候精心记载的全套笔记,...笔记内容包括:Unix、SQL、Core Java 、OOAD & UML、JDBC、 Xml、HTML 、JavaScript、Servlet/JSP、AJAX、Struts1/Struts2、CVS、Hibernate、Spring、EJB、WebService

    J2EE学习笔记(J2ee初学者必备手册)

    Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第...

    js:javascript核心知识点,es6,7,8,9学习笔记,es6工作总结

    卢珑文JavaScript技术栈 1 JS技术学习路线 打回来 诺言 es6 类 事件循环 节点 npm 节点核心 缓冲 流 http 考阿 表达 网络包 打字稿 Vue React 大前端时代的变化 温泉 MVVM前端工程化 跨端UniApp和Flutter 节点...

    notes:一个记笔记的 webapp 原型

    笔记 它是什么? Notes 是知识管理器的第一个原型。 由于技术选择不当,该项目已死。 特征 做笔记 文件存储 使用 Java 代理的网页剪辑 我试图关注的其他要求 连通性 嵌入 外部超链接 内部超链接 进出口 分享 分类 ...

    startowernode:学习笔记

    专题阅读 我从2016年开始系统学习编程之后,便一直零零散散的记录着各种各样的笔记。 其中收集过很多相关资料,但是一直没有汇集成册。 刚好最近比较有空闲,就将自己的学习笔记汇聚成册,希望能够给大家提供帮助。 ...

    coreui-pro-react-admin-template-2.0.4:coreui-pro-react-admin-template-2.0.4

    proPro#CoreUI Pro React管理员模板v2 CoreUI旨在成为UX游戏改变者。 纯透明的代码没有多余的组件,因此该应用程序足够轻巧,可以提供最终的用户体验。 这也意味着移动设备,其导航就像在台式机或笔记本电脑上一样...

Global site tag (gtag.js) - Google Analytics