`

javascript学习笔记:函数与方法

阅读更多

函数:
1、arguments:代表参数,不是数组,但是具有length属性,可以用下标[]访问
2、arguments.callee:当前正在执行的函数
3、arguments中的元素与参数是同义词
   function(a,b){};argument[0]就是a,改变任何一个,另一个都改变了
4、函数的参数类型不需要指定(不同于静态语言)


方法:
1、当一个函数在一个对象上调用的时候,这个函数称为方法。(这应该不是定义吧,但是《javascript权威指南(第五版)》就这么写的)。

2、方法的重要特点:
   在方法体中,关键字this的值就是调用方法的对象(这个跟java没有区别)。
   对于不是方法的函数来说,this关键字引用全局对象。这个还好理解,相当于全局对象是这一类函数的调用对象。

书上的例子,this值得注意。

var calculator = {
  operand1:1,
  operand2:1,
  compute:function(){
    this.result = this.operand1 + this.operand2; //在compute内部,this仍然是指 calculator指向的对象
  }
};
calculator.compute();
console.log(calculator.result);


下面是一个改造的例子,说明:当一个函数作为函数而不是方法调用的时候,this关键字引用全局对象。
var o = {
    a:1,
    calculator : function(){
      console.log(this);//Object { a=1,  calculator=function()}
      function compute(){
        console.log(this);//Window about:ntab
      };  
      compute();
    }
};
o.calculator();
console.log(this);//Window about:ntab


以上代码在定义了o之后,调用了o的方法calculator,而在calculator内部定义了一个嵌套函数compute,它是作为函数而非方法存在的,定义之后直接调用。

  • 在calculator方法中,this指向的调用它对象(就是o引用的对象),这符合方法的特点。
  • compute也是作为函数而不是方法来调用的,因此这里this引用的是全局对象。

控制台打印的结果也印证了第二点。最后一行console.log(this)和compute中的console.log(this)都打印出window。

关于嵌套函数中this的说明,《javascript权威指南(第五版)》中文版说的有点绕口,我理认真看了三遍才明白,原文如下:

“当一个函数作为函数而不是方法调用的时候,这个this关键字引用全局对象。容易令人混淆的是,当一个嵌套的函数(作为函数)在一个包含的函数之中调用,而这个包含的函数却是作为方法调用的,这也是成立的:this关键字在包含的函数中有一个值,但是它却(不太直观地)引用嵌套的函数体的内部的全局对象。”

要理解这段话,首先要弄明白去嵌套的函数和包含的函数,嵌套函数不用说了,包含的函数其实就是指外部函数,这个名字不好理解,叫外部函数就好了。
分享到:
评论

相关推荐

    个人Javascript学习笔记 精华版

    本资源为个人Javascript学习笔记的精华版,涵盖了Javascript的基础知识、事件处理、对象和系统函数、浏览器对象等方面的内容。下面是对每个知识点的详细说明: 1. 什么是JavaScript? JavaScript是一种脚本语言,...

    javascript学习笔记.docx

    这篇学习笔记主要涵盖了JavaScript的基础语法和客户端JavaScript的相关知识。 1. **JavaScript基本语法**: - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **...

    JavaScript学习笔记

    本学习笔记旨在帮助初学者快速掌握JavaScript的核心概念和技术,实现从入门到精通的过渡。 1. **基础语法** - 变量声明:JavaScript支持var、let和const关键字声明变量,理解它们的作用域和提升特性至关重要。 - ...

    JavaScript-学习笔记.pdf

    以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...

    JavaScript学习笔记,javascript基础知识,基础语法整理.pdf

    * 函数是JavaScript中的一种基本结构单元 * 函数可以封装一组语句,实现功能的复用 * 函数可以传递参数,实现参数的传递 * 函数可以返回值,实现结果的返回 三、 JavaScript 中的对象 * 对象是JavaScript中的一种...

    JavaScript学习笔记_js常用函数封装_js包.zip

    本压缩包“JavaScript学习笔记_js常用函数封装_js包.zip”包含了对JavaScript基础及进阶技巧的学习资料,特别关注了函数封装和模块化开发实践。 首先,`tool.js`可能是一个实用工具函数集合,封装了一些常见的...

    JavaScript学习笔记.pdf

    JavaScript 学习笔记 JavaScript 是互联网上流行的脚本语言,可以用于 HTML 和 web,广泛应用于服务器、PC、笔记本、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言,可以插入 HTML 页面的编程代码...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    javascript学习笔记讲解版参考.pdf

    JavaScript学习笔记讲解版参考.pdf是一份详尽的教程,涵盖了从基础到进阶的JavaScript知识。这份笔记首先从CSS样式表开始,引导读者理解网页样式的设置与应用。 1. CSS(Cascading Style Sheets)样式表是用于控制...

    JavaScript基础学习笔记

    JavaScript 基础学习笔记 本资源摘要信息基于黑马视频记录的学习笔记,涵盖了 JavaScript 基础知识点,包括 HTML、CSS、JavaScript、DOM、事件处理等内容。 HTML 和 CSS 基础 * HTML 结构:head、body、title、...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

    前端学习(四)——javascript学习笔记(二)函数

    前端学习——javascript学习笔记(二)函数

    javascript入门学习笔记

    这份"javascript入门学习笔记"旨在为初学者提供一个全面且深入的JavaScript学习路径。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符、流程控制等。变量用于存储数据,数据类型分为基本类型(如字符串...

    Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式

    函数声明 function foo() {} 函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的。即使在函数定义之前调用它也没问题。 foo(); // Works because foo was ...

    各种编程学习笔记:Python, HTML, CSS, Javascript, Git, Linux, PHP.zip

    这篇压缩包文件“各种编程学习笔记:Python, HTML, CSS, Javascript, Git, Linux, PHP.zip”包含了多个关键编程语言和技术的学习资料,是初学者和进阶者宝贵的资源。接下来,我们将深入探讨这些主题,以便更好地理解...

Global site tag (gtag.js) - Google Analytics