`
alanwu
  • 浏览: 197767 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《javascript权威指南第五版》函数/方法

阅读更多
javascript权威指南第五版 函数
一个函数是可以被不断调用,运行的JavaScript代码块。
一个被对象调用的函数成为方法

定义和调用函数
一个函数有:函数名,一个或多个参数名和用大括号组织起来的语句

定义函数的例子:
//返回undefined
function print(msg) {
    document.write(msg, "<br>");
}

// 计算并返回
function distance(x1, y1, x2, y2) {
    var dx = x2 - x1;
    var dy = y2 - y1;
    return Math.sqrt(dx*dx + dy*dy);
}

// 递归
function factorial(x) {
    if (x <= 1)
        return 1;
    return x * factorial(x-1);
}

当函数定义后,可以用()操作符来调用
print("The probability of that is: " + factorial(5)/factorial(13));

8.1.1 内函数
Javascript可以内置函数
function hypotenuse(a, b) {
    function square(x) { return x*x; }
    return Math.sqrt(square(a) + square(b));
}


因为函数和类一样都是一等公民,Scala也允许有内函数

8.1.2 Function Literals
Javascript允许函数定义为:function literals.
function f(x) { return x*x; }              // function statement
var f = function(x) { return x*x; };       // function literal


同样Scala也有这个特性

8.2 函数参数
Javscript可以把函数当成参数进行传递。因为函数是松类型(loosely typed),所以可以传递任何类型的参数值给任何函数。

可选参数
如果传入的参数数量少于需要的数量,那么剩下的参数值都为undefined
如:定义函数拷贝,如果参数a没有传入那么创建一个空数组
function copyPropertyNamesToArray(o, /* optional */ a) {
    if (!a) a = [];  // If undefined or null, use a blank array
    for(var property in o) a.push(property);
    return a;
}


调用该函数:
var a = copyPropertyNamesToArray(o); // 将o的值拷贝给新的数组
copyPropertyNamesToArray(p,a);       // 将p的值拷贝给数组a


8.2.2 可变参数列表:参数对象
Javascript可以侦测函数传入参数的数量
function f(x, y, z)
{
    // 访问arguments对象判断读入的参数长度
    if (arguments.length != 3) {
        throw new Error("function f called with " + arguments.length +
                        "arguments, but it expects 3 arguments.");
    }
    // Now do the actual function...
}


Javascript把传入的参数都放在可变的对象arguments中,因此可以传入不定长的参数列表
function max(/* ... */)
{
    var m = Number.NEGATIVE_INFINITY;
    // 循环便利参数 
 looking for, and
    // 记录最大的值
    for(var i = 0; i < arguments.length; i++)
        if (arguments[i] > m) m = arguments[i];
    // 返回最大值
    return m;
}

var largest = max(1, 10, 100, 2, 3, 1000, 4, 5, 10000, 6);



Javascript不是强类型定义,如果需要确定的类型参数,可以使用类似的判断:

if ((a instanceof Array) ||                         // if array
        (a && typeof a == "object" && "length" in a)) { // or array like
}


8.3 函数作为数值
Javascript中可以将函数当作数在传递,存储和使用
比如定义一个函数:
function square(x) { return x*x; }

然后可以:
var a = square(4);  // a存了16
var b = square;     // b存储了square这个方法!
var c = b(5);       // c存了25


8.4 函数作为方法
当函数在对象中被调用的时候成为方法
var calculator = {  // 定义一个对象
    operand1: 1,
    operand2: 1,
    compute: function() {
        this.result = this.operand1 + this.operand2;
    }
};
calculator.compute();       // 调用方法compute()
print(calculator.result);   // 打印结果



8.6.4 ECMAScript有两个特殊的方法call()和apply()
假设有对象o和函数f
f.call(o, 1, 2);

就等同于
o.m = f;
o.m(1,2);
delete o.m;


appy()和call很类似,只是要用数组传值
f.apply(o, [1,2]);


分享到:
评论

相关推荐

    JavaScript权威指南第五版

    JavaScript权威指南第五版 chm版,供大家更好的学习和查询js相关函数

    JavaScript权威指南第五版(中文)

    《JavaScript权威指南(第5版)》还包括详细的参考手册,涵盖了JavaScript的核心API、遗留的客户端API和W3C标准DOM API,记述了这些API中的每一个JavaScript对象、方法、性质、构造函数、常量和事件处理程序。

    javascript权威指南第五版

    《JavaScript权威指南》全面介绍了JavaScript语言的核心,以及Web浏览器中实现的遗留和标准的DOM。它运用了一些复杂的例子,说明如何处理验证表单数据、使用cookie、创建可移植的DHTML动画等常见任务。本书还包括...

    JavaScript权威指南(第五版).chm

    前端必备的工具书,经典英文原版,可方便查询所有函数以及语法,推荐

    JavaScript权威指南

    JavaScript权威指南(第四版)、PDF格式 (2010 年度畅销榜NO.37 ) 《JavaScript权威指南》全面介绍了JavaScript语言的核心,以及Web浏览器中实现的遗留和标准的DOM。... 个人感觉比前一版和第五版都好。

    JavaScript权威指南(第6版)(中文版).zip

    此JavaScript权威指南(第6版)(中文版)pdf共分四大部分,一共22个章节,非常适合入门学习。内容相当丰富,欢迎下载; 第一部分为:javascript语言核心;第二部分为:客户端Javascript;第三部分为:javaScript核心参考;第四...

    JavaScript权威指南(第五版).rar

    《JavaScript权威指南第4版》中文版出版至今已有三年多的时间。这本《JaVaScript权威指南》连续印刷5次,销售数十万册,成为很多JavaScript学习者的必备宝典。由于其封面上是一只“爪哇犀牛”(封面上印上动物是原书...

    JavaScript权威指南第五版【新】(犀牛书)

    JavaScript权威指南,著名的犀牛书:) This Fifth Edition is completely revised and expanded to cover JavaScript as it is used in today's Web 2.0 applications. This book is both an example-driven ...

    JavaScript权威指南第五版(JavaScript_The_Definitive_Guide_5th.chm)

     《JavaScript权威指南》全面介绍了JavaScript语言的核心,以及Web浏览器中实现的遗留和标准的DOM。它运用了一些复杂的例子,说明如何处理验证表单数据、使用cookie、创建可移植的DHTML动画等常见任务。本书还包括...

    JavaScript权威指南(第五版)

    第1章 JavaScript概述 第一部分 核心JavaScript  第2章 词法结构  第3章 数据类型和值  第4章 变量  第5章 表达式和运算符  第6章 语句  第7章 对象和数组  第8章 函数  第9章 类、构造函数和原型...

    \JavaScript权威指南(第五版)

    本书第五版已经经过全面地修订和扩展,涵盖了构建当今Web2.0应用程序所需的JavaScript技术。本书不仅是一本实例驱动的程序员指南,同时也是一本可以摆在桌边随时查阅的参考手册,它以全新的章节阐述了有效使用...

    潜说js对象和数组

    代码如下: /* 数组和对象 【JavaScript 权威指南 第五版】 */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = {}; var obj = {name: ‘maxthon’}; ...

    jQuery编写程序解释模拟prototype原理机制

    参考资料,JavaScript权威指南(第五版英文原版) --中文版阐述prototype机制时翻译不准确,定义构造函数,和一般函数一样,也是函数(即Function对象的实例),定义函数时都会生成一个专用对象,对象只有一个属性,指向刚...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    • 第五章:XML实例解释 • 一.定义新标识 • 二.建立XML文档 • 三.建立相应的HTML文件 • 第六章:XML相关资源 五. XML和HTML的区别 XML和HTML都来自于SGML,它们都含有标记,有着相似的语法,HTML和XML的最大...

Global site tag (gtag.js) - Google Analytics