`
liuxiaoxi1201
  • 浏览: 4773 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript语言精粹读书笔记——第四章函数(一)

    博客分类:
  • js
 
阅读更多

函数对象

javascript中函数就是对象。函数对象是名/值对的集合并拥有一个连接到原型对象的隐藏连接。对象字面量产生的对象连接到Object.prototype 函数对象连接到Function.prototype。

函数在创建时附加两个隐藏属性:函数上下文  实现函数行为的代码

每个函数对象在创建时也随配有一个prototype属性,它的值是一个拥有constructor属性且值即为该函数的对象,以后具体解释

因为函数是对象,所以它可以像其他对象一样被使用:

  • 可以保存在变量 对象 数组中
  • 可以当做参数传递给其他函数
  • 可以在返回函数
  • 函数是对象,所以函数可以拥有方法
  • 它的与众不同是它可以被调用

函数字面量

函数字面量包括四个部分

第一部分是保留字function

第二部分是函数名,可以被省略。

第三部分是包围在圆括号中的一组参数,这些参数的名称将被定义为函数中的变量,它们不像普通变量被初始化为undefined,而是在该函数被调用时初始化为实际提供的参数的值

第四部分是包围在花括号中的一组语句。这些语句是函数的主体,函数被调用的时候执行

通过函数字面量创建的函数对象包含一个连到外部上下文的连接,这被称为闭包

调用

 调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数,除了声明时定义的形式参数,每个函数还接收两个附加参数:this和argument。this的值取决于函数的调用模式。在javascript中有四种调用模式:

  • 方法调用模式
  • 函数调用模式
  • 构造器调用模式
  • apply调用模式

当实际参数与形式参数个数不匹配的时候不会导致运行时错误,如果多了,多出的参数会被忽略,如果不够,则用undefined补齐,不会对参数进行类型检查

方法调用模式

当一个函数被保存为对象的一个属性时,我们称之为方法,当一个方法被调用时,this绑定到该对象。

如果调用表达式包含一个提取属性动作(即包含一个 . 点表达式或[ ]下标表达式)那么它被当做一个方法调用

var myObject = {
    value:0,
    increment:function(inc){
        this.value += typeof inc === 'number'?inc:1;
    }
}
myObject.increment();
document.writeln(myObject.value);    //1
myObject.increment(2);
document.writeln(myObject.value);    //

 

通过this可取得它们所属对象的上下文方法称为公共方法(public method)

 

函数调用模式

当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用

此模式调用函数时,this被绑定到全局对象。为了解决这个错误让内部函数帮助外部方法工作,可以定义一个that变量把this赋值给他,内部函数可以通过访问that访问到this

myObject.double = function(){
    var that = this;
	var helper = function(){
	    that.value = add(that.value,that.value);
	}
	helper();
}
myObject.double();
document.writeln(myObject.value);   //6

 构造器调用模式

如果一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype成员的新对象,this会绑定到这个对象上

var Quo = function(string){
    var that = this;
    this.status = string;
}
Quo.prototype.get_status = function(){
    return this.status;
}
var myQuo = new Quo("confused");
document.writeln(myQuo.get_status());

 apply调用模式

因为javascript是一门函数式的面相对象编程语言,所以函数可以拥有方法

apply方法让我们构建一个参数数组传递给调用函数。它也允许我们选择this的值。apply方法接收俩个参数,第一个是要绑定给this的值,第二个就是一个参数数组

var array =[3,4];
var sum = add.apply(null,array);    //sum = 7

var statusObject = {
    status:'a-ok'
}

var status = Quo.prototype.get_status.apply(statusObject);    //'a-ok'

 参数

 当函数被调用时,会得到一个免费的陪送参数argument数组。函数可以通过此参数访问所有它被调用时传递给他的参数列表,包括多余的参数。这使得编写一个无须指定参数个数的函数成为可能

var sum = function(){
    var i,sum = 0;
	for(i = 0;i < arguments.length;i++){
	    sum += arguments[i];
	}
	return sum;
};

document.writeln(sum(4,8,15,16,23,42));    //108

 

分享到:
评论

相关推荐

    《JavaScript语言精粹》.pdf

    《JavaScript语言精粹》这本书是深入理解这一语言的宝贵资源,它涵盖了JavaScript的核心概念和技术,旨在帮助读者掌握这门语言的精髓。 在描述中提到的"JavaScript语言精粹 包含pdf 与 epub"表明,这本书提供了两种...

    JavaScript语言精粹 中文高清PDF

    《JavaScript语言精粹》是一本深受开发者欢迎的权威书籍,旨在深入探讨JavaScript这门重要的编程语言,帮助初学者和有经验的程序员掌握其核心概念和最佳实践。这本书以中文高清PDF的形式提供,使得读者可以方便地...

    JavaScript语言精粹pdf

    《JavaScript语言精粹》是一本深受开发者喜爱的经典书籍,它深入浅出地讲解了JavaScript的核心概念和最佳实践。这本书的中文高清PDF版本包含了详细的注解和书签,为读者提供了便利的学习路径。作为标签,"JavaScript...

    JavaScript语言精粹.修订版 Javascript:The Good Parts 中英 pdf

    JavaScript,作为一种广泛应用于Web开发的脚本语言,已经成为现代互联网技术不可或缺的一部分。"JavaScript语言精粹.修订版",即《Javascript: The Good Parts》,是由知名的计算机科学家Douglas Crockford所著,这...

    JavaScript 精粹读书笔记(1,2)

    在《JavaScript 精粹》一书中,作者深入探讨了JavaScript的特性和最佳实践,旨在帮助开发者区分和利用其精华部分,同时避免那些可能会引起问题的鸡肋特性。 首先,JavaScript的某些特性带来了麻烦,因为其规范的不...

    JavaScript语言精粹(修订版)

    "JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...

    JavaScript语言精粹 修订版 中文高清PDF

    《JavaScript语言精粹 修订版》是一本深受前端开发者喜爱的经典教材,专注于讲解JavaScript的核心概念和最佳实践。这本书深入浅出地介绍了JavaScript的精髓,帮助读者掌握这门强大的脚本语言,尤其对于前端开发人员...

    JavaScript语言精粹.pdf.zip

    JavaScript,简称JS,是Web开发领域中最常用的一种脚本语言,尤其在前端开发中占据核心地位。这本书《JavaScript语言精粹》无疑是深入理解和掌握这门语言的重要参考资料。它旨在帮助开发者掌握JavaScript的核心概念...

    JavaScript语言精粹_修订版【高清】带书签 PDF

    "JavaScript语言精粹_修订版【高清】带书签 PDF"是一本专门为JavaScript初学者和进阶者编写的指南,旨在帮助读者深入理解并掌握这种强大的脚本语言。 该书修订版可能包含对原版内容的更新和优化,以适应不断发展的...

    javascript语言精粹_修订版带书签.pdf

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。"JavaScript语言精粹_修订版带书签.pdf" 这本书是开发者深入理解JavaScript语法、特性及最佳实践的重要参考资料。书中的修订版意味着它...

    JavaScript语言精粹 修订版 pdf

    JavaScript语言精粹修订版pdf是许多朋友都在寻找的一款学习资料,在这里能够为您详细的介绍JS这门计算机语言,作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言...

    javascript语言精粹(中+英文版)

    JavaScript 语言精粹是学习这一重要编程语言的基础资源,涵盖了从基本语法到高级特性的全面内容。这本书包含了中文和英文两个版本,方便不同语言背景的学习者参考。 首先,我们要理解JavaScript的基础知识,包括...

    web学习笔记 —— javascript基础

    这篇“web学习笔记——javascript基础”将带你走进JavaScript的世界,理解其基本概念和常用语法。 JavaScript语法基础: 1. 变量:在JavaScript中,变量用于存储数据。声明变量使用`var`关键字,例如`var myVar = ...

Global site tag (gtag.js) - Google Analytics