第七章 引用与function

引用的概念实际上跟C语言的差不多,我理解就是一个指向内存地址的指针,只不过没有指向指针的指针之类。针对引用类型进行的不同操作,会造成互相的影响。

在javaScript里,有五种基本类型,undefined,null,Number,String,Boolean,还有一种复杂类型是Object。,Object就是引用类型。

引用类型在JS里,基本的引用类型有很多,包括但不限于Object,Array,Math,Date,RegExp,Function,Boolean,Number,String。Boolean、Number、String即使基本类型,也是引用类型。

这里说一说Function类型,也就是说好所Function的实例:函数。

  • 定义函数有两种方法,一种是声明方式定义,一种是表达式方式定义。这两个的区别在于函数的定义是在什么时候,如果函数的定义在表达式里,那么我们就说是表达式方式定义的。
  • 函数没有重载,同名的新函数会覆盖同名的旧函数。
  • 函数声明在js里,即使在调用语句之后也是可以的,这成为声明提升,这个特性针对变量也是一样的。
  • 函数可以做为参数和返回值存在。
  • 函数内部有两个特殊对象:this和arguments
  • 函数内部有两个特殊属性:callee,是一个指针,指向函数本身。caller:也是一个指针,指向调用当前函数的函数。a调用b,那么b里边的arguments.caller就指向a。
function a() {
    b();  //调用b
}

function b() {
    alert(b.caller);  //a.caller就指向a,相当于alert(a)
    alert(a);
}
a();
  • 函数有两个特殊的方法:apply()和call()。这两个函数都有一个作用,就是在特定的作用域内调用函数,使被调用的函数的this值变为我们设置的this值,这样就可以扩充函数运行的作用域,而且低耦合!ECMAScript5定义了一个bind()方法,也是差不多的效果。
function sum(num1,num2) {
    alert(num1+num2);
}

function sum1(num1,num2) {
    sum.apply(this,arguments);   //调用了sum函数,并且把sum1的this和arguments对象做为参数,也就是把sum的this变成了sum1的this,sum的arguments对象变成了sum1的arguments对象。
}

sum1(1,2);  //3
时间: 2024-07-28 21:06:04

第七章 引用与function的相关文章

使用JQuery快速高效制作网页交互特效第二章到第七章

第二章 JavaScript对象 浏览器对象模型(BOM)是JavaScript的组成之一,window对象是整个BOM的核心 window对象的常用方法 prompt():显示可提示用户输入的对话框 alert():显示一个带有提示信息和一个"确定"的按钮的警示对话框 confirm():显示一个滴啊有提示信息,"确定"和"取消"按钮的对话框 close():关闭浏览器窗口 open():打开一个新的浏览器窗口,加载给定URL制定的文档 set

ArcGIS API for JavaScript 4.2学习笔记[24] 【IdentifyTask类】的使用(结合IdentifyParameters类)(第七章完结)

好吧,我都要吐了. 接连三个例子都是类似的套路,使用某个查询参数类的实例,结合对应的Task类,对返回值进行取值.显示. 这个例子是Identify识别,使用了TileLayer这种图层,数据来自Server的MapServer. 结果演示 戳不同的地方会有不同的识别结果. 我对TileLayer不是很了解,这一例仅针对有了解的同学,做一个IdentifyTask的解释. IdentifyTask/IdentifyParameter/IdentifyResult三个类 既然是一样的套路,那么先对

c++ primer 5th 笔记:第七章

第七章 笔记 1. 定义在类内部的函数是隐式的inline函数. 2. 使用const的成员函数被称作常量成员函数(const member function). 3. 首先编译成员的声明,然后才轮到成员函数体.因此,成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序. 4. IO类属于不能被拷贝的类型,因此只能通过引用来传递它们. 5. 每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程.这些函数叫做构造函数. 6. 默认构造函数无须

JavaScript高级程序设计(第3版)第七章读书笔记

第七章 函数表达式 1. 函数声明有一个重要特征 ,函数声明提升.即在执行代码之前会先读取函数声明,意味着可以把函数声明放在调用它的语句后面. 2. 使用arguments.callee实现对函数的递归调用.但在严格模式下,不能通过脚本访问arguments.callee,但可以使用命名函数表达式来达成相同的效果. 3. 闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常用方式,就是在一个函数内部创建另一个函数. 4. 由于闭包会携带包含它的函数的作用域,因此会比其他函数占更多的内存.

语法》第七章 函数

(本文为阮一峰js标准教程的学习笔记,旨在总结该教程中涉及的知识点大纲及个人所做的一些拓展,方便作为"目录"或者"大纲"复习和查漏补缺,详细内容请参见阮一峰教程原文) 第二部分 语法 ************第七章 函数************ 一.概述函数就是一段可以反复调用的代码块.函数还能接受输入的参数,不同的参数会返回不同的值.1.函数的三种声明方法1.1function命令[标准函数声明方法]function 函数名(传入参数){函数体} 1.2采用函数表

[书籍翻译] 《JavaScript并发编程》第七章 抽取并发逻辑

本文是我翻译<JavaScript Concurrency>书籍的第七章 抽取并发逻辑,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并发编程方面的实践. 完整书籍翻译地址:https://github.com/yzsunlei/javascript_concurrency_translation .由于能力有限,肯定存在翻译不清楚甚至翻译错误的地方,欢迎朋友们提issue指出,感谢. 到本书这里,我们已经在代码中明确地模拟了并发问题.使

第七章:常用类

第七章:常用类 包装类 java中有8中基本类型,对应有八种包装类作用:包装类中封装了该类型常用的属性和方法,以方便操作.byte---->Byteshort--->Shortint--->Integerlong---->Longfloat---->Floatdouble---->Doublechar---->Characterboolean---->Boolean装箱:将基本数据类型转换成包装类,经常通过构造方法完成.Integer i = new Int

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

JavaScript DOM编程艺术-学习笔记(第七章)

第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文本节点:createTextNode(); ④设置属性节点:setAttribute(); ⑤外部前插入:父元素.insertBefore(插入的元素,目标元素);                  插入的元素被插入到,目标元素的前面. ⑥没有inserAfter()函数. 2.小知识点:①appe