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日

相关文章

  • JavaScript获取客户端IP的方法(新方法)

    JavaScript获取客户端IP的方法(新方法)攻略 在Web开发中,有时候需要获取客户端IP地址以便进行位置定位、用户分析等用途。本攻略将详细讲解使用JavaScript获取客户端IP的方法。 一、使用第三方服务API 我们可以通过调用第三方服务API的方式获取客户端IP地址。其中比较常用的是 ipify,它提供了简单易用、速度快、支持IPv6等特点。 …

    JavaScript 2023年5月27日
    00
  • js校验表单后提交表单的三种方法总结

    JS校验表单后提交表单有三种方法总结,分别是: 1.提交前在JS验证,如果无误则提交。 2.在提交按钮上绑定函数,在函数中判断表单是否填写正确。 3.在表单提交时,拦截表单提交请求,验证表单数据后提交。 下面我将会对上述每个方法进行详细讲解,并提供示例: 1.提交前在JS验证,如果无误则提交 这个方法是最基本的方法,它的核心是在提交表单之前进行验证。我们可以…

    JavaScript 2023年6月10日
    00
  • elementUI Tree 树形控件的官方使用文档

    ElementUI Tree 树形控件是基于Vue.js的一款可折叠的树形菜单组件,用于显示有层次结构的数据。以下是官方使用文档的完整攻略: 树形控件的基本使用 可以使用<el-tree> 标签将树形控件引入到页面中,并传入相应的数据。 其中需要传入的数据包括data和props。 以下是一个简单的示例: <template> &lt…

    JavaScript 2023年6月10日
    00
  • JavaScript 表单处理实现代码

    关于“JavaScript 表单处理实现代码”的详细讲解,本文将分为以下三个部分来介绍。 一、表单处理实现代码的基本知识 在前端开发中,表单的作用是向后端服务器传输数据,因此表单处理是前端开发的核心技术之一。而 JavaScript 是前端开发的主要编程语言之一,它可以很好地与表单交互,实现表单的各种操作。下面是一些常用的表单处理实现代码。 1. 获取表单元…

    JavaScript 2023年6月10日
    00
  • Javascript Array splice 方法

    以下是关于JavaScript Array splice方法的完整攻略。 JavaScript Array splice方法 JavaScript Array splice方法用于向数组中添加或删除元素。该方法会改变原始数组,并返回被删除元素。 下面是一个使用splice方法的示例: var arr = [1, 2, 3, 4, 5]; arr.splice…

    JavaScript 2023年5月11日
    00
  • 前端实现电子签名(web、移动端)通用的实战过程

    前端实现电子签名是一个比较复杂的过程,本文将以通用的实战过程进行详细讲解,主要包含以下几个步骤: 获取签名 处理签名数据 在页面上绘制签名 将签名保存并上传到服务器 1. 获取签名 获取签名有多种方式,常见的包括手写、鼠标绘制、触摸屏绘制等。本文以鼠标绘制为例进行讲解。 在页面上添加一个画布元素,并使用JavaScript获取该元素的上下文对象: <c…

    JavaScript 2023年6月11日
    00
  • vue.js云存储实现图片上传功能

    下面是”vue.js云存储实现图片上传功能”的完整攻略,具体内容如下: 1. 准备工作 在开始实现图片上传功能之前,我们需要进行以下准备工作: 1.1. 创建云存储账号 首先,我们需要去云存储厂商处创建一个账号。以阿里云为例,我们可以参考阿里云对象存储 OSS 快速入门文档进行操作。 1.2. 引入第三方工具库 在实现图片上传功能时,我们通常会使用一些第三方…

    JavaScript 2023年6月11日
    00
  • Bootstrap零基础学习第一课之模板

    那么我们来详细讲解一下 “Bootstrap零基础学习第一课之模板” 的完整攻略。 简介 Bootstrap 是 Twitter 推出的一个用于前端页面开发的框架,使用 Bootstrap 可以快速搭建出漂亮的响应式页面,很多网站都采用了 Bootstrap。Bootstrap 因其易学易用和功能强大而备受欢迎,是很多前端工程师的必备技能之一。 在开始我们的…

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