iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript面向对象编程实现模拟
  • 230
分享到

JavaScript面向对象编程实现模拟

JavaScript面向对象JavaScriptOOP 2022-11-13 18:11:57 230人浏览 安东尼
摘要

目录前言1. 构造函数2. new的过程2.1 基础使用2.2 new.target3. 手动实现一个构造函数前言 每个对象都是一个功能中心,具有明确分工,可以处理信息,处理信息,发

前言

每个对象都是一个功能中心,具有明确分工,可以处理信息,处理信息,发出信息。面向对象编程具有灵活性、可复用性、模块化等好处,适合更多合作完成的大型项目

1. 构造函数

构造函数的功能是生成对象,生成具有相同结构对象的函数。Java语言通过类实现面向对象,对象是类的实例,而javascript则是通过构造函数作为对象的模板,使用prototype实现继承。

构造函数的几个特点

  • 构造函数内部使用了this关键字作为被生成的对象
  • 构造函数配合new 操作符使用
  • 构造函数的第一个字符一般大写用来区分普通函数
  • 构造函数默认返回一个新对象(this),如果手动返回值是引用数据类型会覆盖默认的返回值
function Person(name ){
  this.name = name;
};
const jack = new Person('jack'); //Person {name: 'jack'}
function Person(name ){
  this.name = name;
  return name;
};
const jack = new Person('jack'); //Person {name: 'jack'}
function Person(name ){
  this.name = name;
  return ['jack'];
};
const jack = new Person('jack'); //['jack']

2. new的过程

  • 生成一个新对象绑定给this
  • 将新对象的原型设置为构造函数的prototype属性
  • 执行代码,往this上添加属性
  • 返回this

2.1 基础使用

function Person(name ){
  this.name = name;
};
const jack = new Person('jack');
const tom = new Person('tom');
console.log(jack); //Person {name: 'jack'}
console.log(tom); //Person {name: 'tom'}

直接执行构造函数会怎么样?

function Person(){
  this.name = name;
};
const jack = Person('jack'); //undefined

构造函数的this指向了window,并没有返回一个对象,我们现在做以下兼容:

function Person(name){
 if(!(this instanceof Person)){
  return new Person(name);
 };
 this.name = name;
};

现在可以直接使用了

Person(name); //Object { name: "jack" }

2.2 new.target

在函数内部都可以使用new.target,如果函数是通过new.target调用的则返回被调用的构造函数否则返回undefined

function Person(){
  console.log(new.target);
};
new Person(); //function Person(){...}
Person(); //undefined

现在使用new.target进行构造函数的兼容

    function Person(name){
      if(!(new.target === Person)){
           return new Person(name);
      };
      this.name = name;
    };
    console.log(Person('jack')); //Object { name: "jack" }

3. 手动实现一个构造函数

  function myNew() {
      const args = Array.prototype.slice.call(arguments);
      const construct = args.shift();
      //创建this,并将原型设置为构造函数的prototype
      const context = Object.create(construct.prototype);
      //执行构造函数,注意这里参数是数组形式所以使用apply
      construct.apply(context, args);
      //返回
      const res = construct();
      if ((typeof res === 'object' || res === 'function') && typeof res !== 'null') {
        return res;
      } {
        return context;
      }
    };
    function Person(name, age) {
      this.name = name;
      this.age = age;
    };
    const jack = myNew(Person, 'jack', 21);
    //Person {name: 'jack', age: 21}

到此这篇关于JavaScript面向对象编程实现模拟的文章就介绍到这了,更多相关js面向对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript面向对象编程实现模拟

本文链接: https://www.lsjlt.com/news/169375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript面向对象编程实现模拟
    目录前言1. 构造函数2. new的过程2.1 基础使用2.2 new.target3. 手动实现一个构造函数前言 每个对象都是一个功能中心,具有明确分工,可以处理信息,处理信息,发...
    99+
    2022-11-13
    JavaScript面向对象 JavaScript OOP
  • python面向对象编程怎么实现
    这篇文章主要介绍“python面向对象编程怎么实现”,在日常操作中,相信很多人在python面向对象编程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python面向...
    99+
    2024-04-02
  • PHP面向对象编程:面向接口编程
    dip 是一种设计模式,通过创建依赖于接口而非具体实现的类来实现松耦合和易维护。好处包括灵活性、可测试性和可扩展性。要实现 dip,请定义接口、创建实现接口的类,并将接口作为依赖项传递给...
    99+
    2024-05-10
    php 面向对象 php面向对象编程
  • JavaScript面向对象编程详细讲解
    这篇文章主要介绍“JavaScript面向对象编程详细讲解”,在日常操作中,相信很多人在JavaScript面向对象编程详细讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • JavaScript 对象在面向对象编程中的作用:理解对象模型的力量
    对象作为数据结构 JavaScript 对象是无序的键值对集合。键和值都可以是任何类型,包括其他对象。这使对象成为存储和组织数据的强大容器。例如,您可以使用对象来表示客户信息,其中键是属性(例如姓名、地址),值是相应的值。 方法封装行为 ...
    99+
    2024-03-13
    导言 JavaScript 对象是面向对象编程(OOP)范式的一个基本构建块。理解其在 OOP 中的强大功能至关重要 因为它使您能够创建灵活、可扩展和可维护的代码。
  • java中怎么实现面向对象编程
    这篇文章给大家介绍java中怎么实现面向对象编程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1:允许将子类的引用付给父类的对象,但子类中的那些不是从父类继承来的成员将不再可见。例:Bus bus=new&n...
    99+
    2023-06-17
  • python 面向对象编程
    文章目录 前言如何理解面向对象编程在 python 中如何使用面向对象编程定义类创建对象self添加和获取对象属性添加属性类外添加属性类中添加属性 访问属性类外访问属性类中访问属性 ...
    99+
    2023-08-31
    python 开发语言
  • Python-面向对象编程
    面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,比如人类、动物类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。 以人类为例,创建一个实例为 xiaomi...
    99+
    2023-01-31
    面向对象 Python
  • python_面向对象编程
    初始面向对象 一、类的实例化: 调用类产生对象的过程称为类的实例化, 实例化的结果是一个对象,或称为一个实例 class People: def __init__(self, name, age, sex)...
    99+
    2023-01-30
    面向对象
  • PHP面向对象编程:面向事务编程
    事务编程是一种设计模式,用于同时操作多个资源,如果任何操作失败,则自动回滚所有更改,确保数据一致性。在 php 中,使用 pdo 类进行事务编程,通过 pdo::begintransac...
    99+
    2024-05-11
    php 面向对象编程 mysql php面向对象编程
  • Python面向对象编程
      面向对象最重要的概念就是类(Class)和实例(Instance),Java比较熟了,下面贴代码注释   class Student(object): def __init__(self, name, score): ...
    99+
    2023-01-30
    面向对象 Python
  • JavaScript实现选项卡功能(面向过程与面向对象)
    目录面向过程面向对象 面向过程 注意: ul>li 标签属性中 的index属性值是串联起ol>li与ul>li的关键,通过调用相同索引下标的数组中的不同...
    99+
    2024-04-02
  • PHP 面向对象编程与设计模式
    面向对象编程 (oop) 是一种编程范例,使用对象和类,提供封装、继承和多态性,提高代码可维护性。设计模式是解决常见软件设计问题的实践验证解决方案,php 中常用的设计模式包括:工厂模式...
    99+
    2024-05-06
    面向对象编程 设计模式
  • Python OOP 面向对象编程
    参考:黑马程序员教程 - Python基础 面向对象 OOP三大特性,且三个特性是有顺序的: 封装 继承 多态 封装 指的就是把现实世界的事务,封装、抽象成编程里的对象,包括各种属性和方法。这个一般都很简单,不需要多讲。 唯一要注意的...
    99+
    2023-01-31
    面向对象 Python OOP
  • 面向对象编程介绍
    目录 面向过程编程 面向对象编程 面向过程变成的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么然后干什么…… 基于面向过程...
    99+
    2023-01-31
    面向对象
  • Python面向对象编程(一)
    目录一、程序中定义类和对象1、 定义类2、 定义对象二、定制对象独有特征1、引入2、定制对象独有特征3、对象属性查找顺序4、类定义阶段定制属性三、对象的绑定方法1、类使用对象的绑定对...
    99+
    2024-04-02
  • Python面向对象编程(三)
    目录一、isinstance和issubclass二、反射(hasattr和getattr和setattr和delattr)1、反射在类中的使用2、反射在模块中的使用3、实例:基于反...
    99+
    2024-04-02
  • Python面向对象编程(二)
    目录一、对象的继承1、类的构造函数继承__init__():2、继承关系中,对象查找属性的顺序二、类的派生1、派生方法一(类调用)2、派生方法二(super)三、类的组合四、多父类继...
    99+
    2024-04-02
  • PythonOOP面向对象编程1
    什么是对象? 对象是指现实中的物体或实体(拥有一系列变量、函数(方法)的) 什么事面向对象? 把一切看成对象(实例),让对象和对象之间建立关联关系 对象都有什么特征? 属性(名词)实例变量 姓名、年龄、性别 行为(动作)实...
    99+
    2023-01-30
    面向对象 PythonOOP
  • Python面向对象编程 一
    一、类    面向对象是对函数进行分类和封装,其主要目的是提高程序的重复实用性,让开发更方便快捷。    在我们的认知中,我们会根据属性相近的东西归为一类。例如:鱼类,鱼类的共同属性是呼吸,卵生。任何一个鱼都在此鱼类基础上创建的。    定...
    99+
    2023-01-31
    面向对象 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作