职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 430|回复: 2

javascript_core阅读笔记(三)

[复制链接]
钰云 发表于 2011-7-18 08:56 | 显示全部楼层 |阅读模式
本系列内容是阅读javascript_core的笔记,原文见http://abruzzi.iteye.com/

13.javascript中的函数对参数的处理十分灵活,可以传递任意数量的参数给一个function
Js代码  
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"));  

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.扩展数组和数组的遍历
Js代码  
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   
}  

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

hxy 发表于 2011-7-18 08:56 | 显示全部楼层
推荐链接
年薪100万诚邀IT讲师
【推荐】java 新手是如何获得“8K月薪”的?

ksdal 发表于 2011-7-20 09:53 | 显示全部楼层
顶上去~~~~~~~~~~`
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 15:43 , Processed in 0.121151 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表