js面向对象的写法

这里给您介绍js面向对象的写法的完整攻略。

目录

  1. 面向对象基本概念
  2. JS面向对象写法
  3. 示例说明

1. 面向对象基本概念

在面向对象编程中,我们考虑的对象是真实存在的,或者说虚拟存在的,但是与我们实际的业务有直接关系的实体。比如我们在开发一个购物网站,我们可能会把商品,订单,用户,购物车这些实体看成对象。

在面向对象编程中,我们的关注点是对象之间的关系和交互,而不是对象本身所做的工作。我们使用封装,继承和多态来实现这些关系。

封装:是指将对象的状态和行为保存在对象内,通过有限的接口来访问它们。

继承:方法通过从一个类到另一个类的现有代码的继承,使代码重用并在代码之间产生关系。

多态:指同一实体具有多个形式。在OOP中,多态意味着某个类可以使用与另一类相同的方法。

2. JS面向对象写法

在JavaScript中,我们使用构造函数来创建对象。一个构造函数实际上代表了一个特定类型的对象,使用new关键字实例化一个类会生成一个对象。我们常常使用JavaScript来处理动态对象,方法在运行时可以在不同类型的对象中重用,这种灵活性是几乎所有编程语言中都无法匹敌的。

我们使用函数来定义一个类,通过调用函数并构造实例来生成新对象。这个函数叫做构造函数,我们约定以大写字母开头。构造函数中有实例属性和实例方法,实例属性由字符串或引用类型的值组成,而实例方法由function语句定义的函数构成,它们都是和instances这个实例有关的,并且仅能在instances上调用。

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.speak = function() {
    console.log('My name is ' + this.name + ', ' + 'I am ' + this.age + ' years old, ' + 'I am a ' + this.gender);
  }
}

在这个例子中,我们定义了一个表示人的类。这个类有三个实例属性(name, age, gender),一个实例方法(speak)。这个speak()方法作为实例方法,仅能在instances实例上调用,而不能在类之间共享。

创建instances实例的方法是通过new关键字来调用构造函数:

var person1 = new Person('Lily', 18, 'female');
var person2 = new Person('Mike', 20, 'male');
person1.speak(); // My name is Lily, I am 18 years old, I am a female
person2.speak(); // My name is Mike, I am 20 years old, I am a male

在这里我们实例化了两个人的对象实例,分别创建了一个女生Lily和一个男生Mike,然后调用speak()方法来实现输出。

3. 示例说明

接下来,我们具体使用一个小例子来说明。我们创建一个动物类,有三个实例方法,分别是eat(), move(), sleep()过程,然后扩展出两个子类--狗和鸟。

首先,我们可以定义一个动物类Animal,通过加上属性name和type,然后添加eat(), move(), sleep()方法来初始化。

function Animal(name, type) {
  this.name = name;
  this.type = type;
}
Animal.prototype.eat = function() {
  return `I am a ${this.type}, I like eating.`;
}
Animal.prototype.move = function() {
  return `I am a ${this.type}, I can run and swim and fly.`;
}
Animal.prototype.sleep = function() {
  return `I am a ${this.type}, I am sleeping.`;
}

接着,我们为狗和鸟分别定义Dog()和Bird()构造函数,他们都继承Animal()构造函数。Dog()具有additional方法bark()并且Bird()具有additional方法fly()。

function Dog(name) {
  Animal.call(this, name, 'dog');
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.bark = function() {
  return `I am a ${this.type}, I am barking.`;
}

function Bird(name) {
  Animal.call(this, name, 'bird');
}
Bird.prototype = Object.create(Animal.prototype);
Bird.prototype.constructor = Bird;
Bird.prototype.fly = function() {
  return `I am a ${this.type}, I am flying.`;
}

最后我们创建实例对象实现运行:

var lucy = new Dog('lucy');
var tweety = new Bird('tweety');
console.log(lucy.eat()); // I am a dog, I like eating.
console.log(tweety.fly()); // I am a bird, I am flying.
console.log(lucy.bark()); // I am a dog, I am barking.
console.log(tweety.sleep()); // I am a bird, I am sleeping.

在这里,我们创建了一只名叫Lucy的狗和一只名叫Tweety的鸟。然后,我们调用实例方法eat(),fly(),bark()和sleep()来输出这两个实例化对象的行为。

这就是一个比较完整的JS创建对象和类的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js面向对象的写法 - Python技术站

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

相关文章

  • 利用JS实现浏览器的title闪烁

    要实现浏览器中Title的闪烁,可以使用 JavaScript 语言来完成。下面是两种实现闪烁效果的方式。 方式一:使用 setInterval 实现闪烁效果 <script> // 定义变量 var title = document.title; var char = ‘●’; // 闪烁字符 var timer = null; // 创建函数…

    JavaScript 2023年6月11日
    00
  • 深入浅析JavaScript中的RegExp对象

    深入浅析JavaScript中的RegExp对象 什么是RegExp对象? RegExp对象是JavaScript中处理正则表达式的核心对象。正则表达式(Regular Expression)是一种匹配文本的模式,常用于搜索、替换、验证等操作。 创建RegExp对象 创建RegExp对象可以使用字面量方式和构造函数方式。 字面量方式 const regExp…

    JavaScript 2023年5月27日
    00
  • 总结javascript中的六种迭代器

    下面是对 JavaScript 中的六种迭代器的详细讲解。 什么是迭代器 在开始讲解迭代器之前,先来了解一下什么是迭代器。迭代器是一种设计模式,用于遍历任何类型的数据。简单来说,迭代器就是一个对象,该对象允许在一次运行中获取序列中的各个元素。 JavaScript 中的六种迭代器 JavaScript 提供了内置的六种迭代器,分别为: forEach() m…

    JavaScript 2023年5月27日
    00
  • JavaScript 滚轮事件使用说明

    下面为大家详细讲解JavaScript滚轮事件使用说明的完整攻略。 一、什么是JavaScript滚轮事件 JavaScript可以监听各种用户输入事件,其中包括鼠标滚轮事件。鼠标滚轮事件通常用来控制页面或者应用的滚动条滚动,也可以用来做一些交互效果。 二、滚轮事件原理 鼠标滚轮事件原理和其他鼠标事件类似,需要通过事件监听和回调函数来实现。当鼠标滚轮发生滚动…

    JavaScript 2023年6月10日
    00
  • 微信小程序 触控事件详细介绍

    微信小程序 触控事件详细介绍 在微信小程序开发中,触控事件是非常重要的一部分,掌握触控事件可以让我们更好地掌控页面的交互体验。接下来,我们将详细介绍微信小程序中常用的触控事件。 原生触控事件 微信小程序中,原生支持的触控事件有: touchstart 当手指触摸屏幕并开始移动时触发,即手指触摸屏幕的瞬间会触发一次。可以通过 event.touches 事件对…

    JavaScript 2023年6月11日
    00
  • JavaScript获取上传文件相关信息示例详解

    让我详细讲解一下“JavaScript获取上传文件相关信息示例详解”。 1. 背景介绍 在前端开发中,有时需要上传文件,比如上传图片、上传文档等。上传文件时,我们需要获取文件的相关信息,比如文件名称、文件大小、文件类型等信息。 在本文中,我们将通过两条 JavaScript 示例详细讲解如何获取上传文件的相关信息。 2. 示例1:使用FileReader对象…

    JavaScript 2023年5月27日
    00
  • JS基础随笔(菜鸟必看篇)

    下面是关于“JS基础随笔(菜鸟必看篇)”的详细攻略。 简介 “JS基础随笔(菜鸟必看篇)”是一篇介绍JavaScript基础知识的文章,适合初学者阅读,主要包括变量、数据类型、运算符、函数、DOM、事件等内容。文章采用易懂的语言和多个示例帮助读者理解JavaScript的基础概念。 攻略 变量 变量是储存数据的容器,JavaScript中的变量需要通过关键字…

    JavaScript 2023年5月18日
    00
  • 浅谈javascript中字符串String与数组Array

    浅谈JavaScript中字符串String与数组Array 1. 字符串String 字符串在JavaScript中表示一段文本,可以使用单引号 ‘ 或双引号 ” 包裹起来。例如: let str1 = ‘Hello, world!’; let str2 = "Hello, JavaScript!"; 1.1 字符串的属性和方法 1.1…

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