我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript面向对象编程实现模拟

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript面向对象编程实现模拟

前言

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

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面向对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript面向对象编程实现模拟

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

下载Word文档

猜你喜欢

JavaScript面向对象编程实现模拟

面向对象编程(ObjectOrientedProgramming)将现实世界中的复杂关系抽象成一个个对象,通过对象之间的分工合作对现实世界进行模拟
2022-11-13

java中怎么实现面向对象编程

这篇文章给大家介绍java中怎么实现面向对象编程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1:允许将子类的引用付给父类的对象,但子类中的那些不是从父类继承来的成员将不再可见。例:Bus bus=new Bus();
2023-06-17

PHP面向对象编程:面向事务编程

事务编程是一种设计模式,用于同时操作多个资源,如果任何操作失败,则自动回滚所有更改,确保数据一致性。在 php 中,使用 pdo 类进行事务编程,通过 pdo::begintransaction() 启动事务,pdo::commit() 提
PHP面向对象编程:面向事务编程
2024-05-11

PHP面向对象编程:面向接口编程

dip 是一种设计模式,通过创建依赖于接口而非具体实现的类来实现松耦合和易维护。好处包括灵活性、可测试性和可扩展性。要实现 dip,请定义接口、创建实现接口的类,并将接口作为依赖项传递给类。实战案例中,我们创建了 imessagesende
PHP面向对象编程:面向接口编程
2024-05-10

Python面向对象编程

面向对象最重要的概念就是类(Class)和实例(Instance),Java比较熟了,下面贴代码注释 class Student(object): def __init__(self, name, score): sel
2023-01-30

python_面向对象编程

初始面向对象一、类的实例化: 调用类产生对象的过程称为类的实例化, 实例化的结果是一个对象,或称为一个实例class People: def __init__(self, name, age, sex):
2023-01-30

Python-面向对象编程

面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,比如人类、动物类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。以人类为例,创建一个实例为 xiaoming
2023-01-31

PHP 面向对象编程与设计模式

面向对象编程 (oop) 是一种编程范例,使用对象和类,提供封装、继承和多态性,提高代码可维护性。设计模式是解决常见软件设计问题的实践验证解决方案,php 中常用的设计模式包括:工厂模式:创建对象而不指定实际类单例模式:确保类只有一个实例观
PHP 面向对象编程与设计模式
2024-05-06

Python面向对象编程 一

一、类    面向对象是对函数进行分类和封装,其主要目的是提高程序的重复实用性,让开发更方便快捷。    在我们的认知中,我们会根据属性相近的东西归为一类。例如:鱼类,鱼类的共同属性是呼吸,卵生。任何一个鱼都在此鱼类基础上创建的。    定
2023-01-31

Python OOP 面向对象编程

参考:黑马程序员教程 - Python基础 面向对象OOP三大特性,且三个特性是有顺序的:封装继承多态封装指的就是把现实世界的事务,封装、抽象成编程里的对象,包括各种属性和方法。这个一般都很简单,不需要多讲。唯一要注意的就是:推荐从小往大开
2023-01-31

编程热搜

目录