JavaScript函数、闭包、原型、面向对象学习笔记

JavaScript函数学习笔记

什么是函数

函数是 JavaScript 中的一个代码块,它可以重复执行,并且可通过传入参数和返回值来实现对信息的处理和存储。

函数的定义方式

JavaScript 中有多种定义函数的方式,以下是其中常用的三种方式:

1. 函数声明

使用 function 关键字定义的函数,代码如下:

function functionName (arg1, arg2, ..., argN) {
  // 函数体
  return returnValue;
}

其中 functionName 为函数名,arg1, arg2, ..., argN 为参数列表,return 为返回值关键字,returnValue 为返回值。

2. 函数表达式

可以将函数定义为一个变量,代码如下:

var functionName = function (arg1, arg2, ..., argN ) {
  // 函数体
  return returnValue;
}

其中 functionName 为变量名,arg1, arg2, ..., argN 为参数列表,return 为返回值关键字,returnValue 为返回值。

3. 箭头函数

ES6 引入了箭头函数的概念,代码如下:

var functionName = (arg1, arg2, ..., argN) => {
  // 函数体
  return returnValue;
}

其中 functionName 为变量名,arg1, arg2, ..., argN 为参数列表,return 为返回值关键字,returnValue 为返回值。

函数调用

调用一个函数时,需要将传入的参数放在括号内。代码如下:

function add (a, b) {
  return a + b;
}

add(1, 2); // 3

以上代码是调用 add 函数,传入 12 两个参数,并返回它们的和 3

闭包学习笔记

什么是闭包

闭包是在一个函数内部定义另一个函数,这个被定义的函数可以使用其外部函数的变量,但是外部函数却无法访问内部函数的变量。

闭包的作用

使用闭包可以在函数内部定义变量,并且可以避免这些变量对外部环境的污染。

闭包的示例

function outerFunction() {
  var a = 0;
  function innerFunction() {
    a++;
    console.log(a);
  }
  return innerFunction;
}

var fn = outerFunction();
fn(); // 1
fn(); // 2
fn(); // 3

以上代码中,我们在外部函数 outerFunction 中定义了变量 a 和内部函数 innerFunction,内部函数 innerFunction 又可以访问外部函数 outerFunction 中的变量 a,通过将内部函数 innerFunction 赋值给变量 fn 并且调用 fn 函数,a 变量的值被每次自增 1,并打印输出。

原型学习笔记

原型是什么

每个 JavaScript 对象都有一个原型对象,原型对象也是一个对象,或者说是当前对象的父对象。如果我们访问一个对象不存在的属性或方法时,JavaScript 就会在原型对象中查找,如果找到了就直接返回对应的值,如果没有找到,则继续在原型对象的原型对象中查找,直到找到或者到达顶层为止。

原型链是什么

JavaScript 对象之间通过原型来相互关联,形成了所谓的原型链。

构造函数与原型

JavaScript 中的每个函数对象都有一个 prototype 属性,这个属性指向了一个对象,这个对象就是实例化之后所有新创建对象的原型。

通过 new 关键字创建对象时,JavaScript 引擎会将对象的原型链接到构造函数的 prototype 属性所指向的对象上。

用一个简单的例子来说明:

function Animal(name) {
  this.name = name;
}

Animal.prototype.sayName = function () {
  console.log('My name is ' + this.name);
}

var cat = new Animal('Tom');
cat.sayName();

以上代码中,我们定义了一个 Animal 构造函数,并在其 prototype 属性上添加了一个 sayName 方法。

我们通过 new 关键字创建了一个 cat 对象,cat 对象继承了 Animal.prototype 对象上的 sayName 方法,所以可以通过 cat.sayName() 来调用该方法,输出 My name is Tom

面向对象学习笔记

什么是面向对象

面向对象是一种编程思想,其基本概念是将数据和处理数据的方法绑定在一起,形成一个独立的对象。

面向对象的三个特征

  1. 封装:将数据和处理数据的方法包装起来,对外部不可见,只提供一些方法供外界使用。
  2. 继承:子类继承父类的属性和方法,可以重写父类的方法,子类也可以添加新的属性和方法。
  3. 多态:同一方法可以根据不同的对象实现不同的行为。

面向对象的示例

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHello = function () {
  console.log('Hello, my name is ' + this.name + ', I am ' + this.age + ' years old.');
}

function Student(name, age, grade) {
  Person.call(this, name, age);
  this.grade = grade;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

Student.prototype.sayHello = function () {
  console.log('Hello, my name is ' + this.name + ', I am ' + this.age + ' years old, and I am a student in grade ' + this.grade);
}

var person = new Person('John', 30);
person.sayHello();

var student = new Student('Tom', 18, 'Grade 12');
student.sayHello();

以上代码中,我们定义了一个 Person 构造函数,并在其 prototype 属性上添加了一个 sayHello 方法。

通过继承 Person 构造函数,我们又定义了一个 Student 子类,并在子类中重写了 sayHello 方法,sayHello 方法输出了和 Person 类不同的内容。

通过 new 关键字创建了一个 person 对象,和一个 student 对象,并调用它们的 sayHello 方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript函数、闭包、原型、面向对象学习笔记 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Backbone前端框架核心及源码解析

    Backbone前端框架核心及源码解析 Backbone是一款前端框架,它的核心是提供了MVC架构中Model(模型)和Collection(集合),以及View(视图)和Router(路由)的基础实现。Backbone的源码易读易懂,阅读源码可以对JavaScript编程有更深刻的理解。 1. Model和Collection Model Model表示前…

    JavaScript 2023年6月11日
    00
  • JavaScript生成.xls文件的代码

    生成Excel文件是前端开发中常见的需求之一,可以通过JS库来实现。目前比较流行的库有两个:SheetJS和Handsontable,本文将以SheetJS为例来讲解如何使用JS生成Excel文件的完整攻略。 SheetJS库介绍 SheetJS是一组用于处理Excel文件的JS库,可读取、修改和写入Excel文件,支持XLS、XLSX等多种格式。同时She…

    JavaScript 2023年5月19日
    00
  • JavaScript中的prototype使用说明

    JavaScript中的prototype是指每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象。当使用该函数创建一个对象时,对象的__proto__指针会指向该函数的prototype属性所指向的对象。这意味着在该对象上调用该函数时,该函数中定义的所有方法和属性都可以在该对象上使用。 下面我们来详细说明一下prototype的使用方式…

    JavaScript 2023年6月11日
    00
  • JavaScript基础函数整理汇总

    JavaScript基础函数整理汇总 JavaScript作为前端开发中最重要的语言之一,函数作为其重要的编程元素之一,对于掌握JavaScript编程至关重要。本文将深入剖析JavaScript中基础函数的使用,包括函数的定义、调用、参数传递等方面,帮助初学者完整掌握JavaScript基础函数的概念和使用方法。 函数定义 JavaScript中函数的定义…

    JavaScript 2023年5月18日
    00
  • js取整数、取余数的方法

    下面是详细讲解“js取整数、取余数的方法”的完整攻略,希望能对您有所帮助。 取整数的方法 在Javascript中,我们可以使用以下方法来取整数部分: Math.floor() Math.floor()方法返回一个小于或等于给定数字的最大整数值。该方法向下舍入并返回值是比指定数字小的最大整数。 Math.floor(4.9); // 4 Math.floor…

    JavaScript 2023年5月27日
    00
  • 原生JS实现文件上传

    下面是“原生JS实现文件上传”的详细攻略: 1. HTML结构 在HTML文件中添加一个表单,包含一个文件输入和一个提交按钮。 <form enctype="multipart/form-data"> <input type="file" name="fileInput" id=&…

    JavaScript 2023年5月27日
    00
  • javascript表单验证 – Parsley.js使用和配置

    JavaScript表单验证是Web开发过程中一个非常重要的环节,可以用于确保用户在提交表单时输入的数据格式正确且符合预期,从而提高应用程序的稳定性和可用性。 Parsley.js是一个轻量级的JavaScript表单验证库,可以有效地帮助开发人员构建和配置表单验证规则。下面是一份Parsley.js的配置攻略: 步骤1:安装Parsley.js 首先,需要…

    JavaScript 2023年6月10日
    00
  • 简介JavaScript中charAt()方法的使用

    简介JavaScript中charAt()方法的使用 什么是charAt()方法? JavaScript中的charAt()是一个字符串方法,用于返回指定索引处的字符。索引从0开始,即第一个字符的索引为0,第二个字符的索引为1,以此类推。如果索引超过了字符串的长度,则返回空字符串。 如何使用charAt()方法? 使用charAt()方法的语法如下: str…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部