js 创建对象 经典模式全面了解

JS创建对象-经典模式

在JavaScript中,对象是实例化一个类的一种方式。JS有很多种方式来创建对象,经典模式是其中一种,也是​​最基础的一种,但是在ES6中已经有了更加方便的方式来实现创建对象。

经典方式

那么什么是经典方式呢?经典方式指的是使用构造函数来实现创建对象。

构造函数创建对象

构造函数实际上就是普通的JS函数,在使用构造函数创建对象的时候,我们使用了'new'关键字去创建一个实例,如下:

function Animal(name, type) {   //构造函数
    this.name = name;
    this.type = type;
    this.say = function () {    //公共方法
        console.log(`My name is ${this.name}, I'm a ${this.type}.`);
    };
}
let cat = new Animal('Tom', 'Cat');   //实例
cat.say();    // My name is Tom, I'm a Cat.

首先定义了一个构造函数 Animal,并且在构造函数里定义了两个属性,name、type一个公共方法 say(),注意,这个公共方法是每一个使用该构造函数创建的实例都会共享的。

当我们使用'new'关键字创建一个实例的时候,会创建一个对象,并且这个新对象的原型会链接到构造函数的原型(Animal.prototype),因此,在这个实例中能够访问到原型上的方法和属性。

可以通过instanceof来判断该对象是否是通过该构造函数的实例创建的。

console.log(cat instanceof Animal); //true

原型方式创建对象

在使用构造函数定义一个对象的时候,公共方法可能会占用过多的内存,因为每一个实例都会创建一个相同的方法,但是JS中有一个更加高效的方式来处理这种问题,那就是原型方式。

首先我们通过构造函数定义一个对象,然后通过给该构造函数的原型 prototype 添加属性和方法,来实现共享这些属性和方法。这些属性和方法都可以通过实例(实例.proto)来访问。

function Animal(name, type) {    //构造函数
    this.name = name;
    this.type = type;
}
Animal.prototype.say = function () {   //原型方法
    console.log(`My name is ${this.name}, I'm a ${this.type}.`);
};

let dog = new Animal('Lucy', 'Dog');  //实例
dog.say();    //My name is Lucy, I'm a Dog.
console.log(dog instanceof Animal);   //true

Object.create()方式

我们还可以使用ES5中的Object.create()方法来创建一个对象实例,这种方式实际上是采用了原型式继承的一种比较常见的方式。

let Animal = {   //基础对象
    name: '',
    type: '',
    say() {
        console.log(`My name is ${this.name}, I'm a ${this.type}.`);
    }
}

let dog = Object.create(Animal);  //创建实例对象
dog.name = 'Lucy';
dog.type = 'Dog';
dog.say();   //My name is Lucy, I'm a Dog.
console.log(dog instanceof Animal);   //false

在这个例子中,我们定义了一个基础对象Animal,然后使用Object.create()方法来生成一个新的实例dog,实际上就是在生成一个新的对象,并且原型链上指向了Animal对象,在这个实例中可以访问到Animal对象上的所有属性和方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 创建对象 经典模式全面了解 - Python技术站

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

相关文章

  • JavaScript严格模式

    JavaScript严格模式是一种JavaScript的语言模式,它具有更严格的语法规则和更加安全的行为。使用严格模式可以更早地检测出代码错误,并防止一些常见的JavaScript陷阱。在本文中,我们将深入探讨JavaScript严格模式,介绍它的用法、优势和限制,并提供代码示例。 1.使用严格模式 启用JavaScript严格模式的方法很简单:只需要在代码…

    Web开发基础 2023年3月30日
    00
  • JS正则表达式替换url参数的方法

    下面我就来详细讲解JS正则表达式替换url参数的方法的攻略。 一、背景 在前端开发中,我们经常需要对url地址的参数进行替换、添加、删除等操作。而使用正则表达式可以让这些操作更加高效、灵活。下面就是如何使用JS正则表达式替换url参数的方法的详细步骤。 二、操作步骤 1. 获取URL地址 首先,我们需要获取URL地址,在JS中可以使用window.locat…

    JavaScript 2023年6月10日
    00
  • JavaScript 字符串新增方法 trim() 的使用说明

    当处理用户输入或文本数据时,JavaScript 字符串经常需要去除其前后的空格,此时可以使用字符串 trim() 方法。本文将详细介绍 trim() 方法的使用说明。 一、语法 trim() 方法没有参数。它会从字符串的两端去除空格,并返回去除空格后的字符串。 二、示例 以下两个示例演示了该方法的使用。 示例1 const str = " hel…

    JavaScript 2023年5月28日
    00
  • JavaScript返回0-1之间随机数的方法

    当我们需要获取0-1之间的随机数时,可以使用JavaScript提供的Math对象的随机函数进行实现。具体实现方式如下: 方法1 Math.random() 使用Math.random()方法可以获取0-1之间的随机数,具体实现代码如下: function getRandom() { return Math.random(); } 使用示例: console…

    JavaScript 2023年6月10日
    00
  • js判断是否有中文的脚本_js判断中文方法集合 原创

    标题:JS判断是否有中文的脚本 JS代码: /** * 判断字符串中是否存在中文字符 * @param {string} str – 待判断的字符串 * @returns {boolean} – 如果存在中文字符则返回true,否则返回false */ function hasChineseCharacter(str) { // 使用正则表达式进行匹配 va…

    JavaScript 2023年5月19日
    00
  • js键盘事件实现人物的行走

    关于“js键盘事件实现人物的行走”的攻略,我可以提供以下几点内容: 实现过程 获取元素和初始化人物位置 首先需获取人物元素,以及初始化人物所在的位置。获取元素可以使用document.getElementById()或document.querySelector()方法,而初始位置可以使用CSS属性left和top来设置。 const man = docum…

    JavaScript 2023年6月11日
    00
  • Asp.net中使用DapperExtensions和反射来实现一个通用搜索

    下面是关于Asp.net中使用DapperExtensions和反射来实现一个通用搜索的详细攻略。 简介 DapperExtensions是一个用于扩展Dapper ORM的库,它可以方便地进行一些高级查询操作。通常情况下,我们需要编写大量的重复代码来实现这些查询操作。而DapperExtensions就是为了解决这些问题而生的。在本篇文章中,我们将通过Da…

    JavaScript 2023年6月11日
    00
  • js 中 document.createEvent的用法

    下面是关于”js 中 document.createEvent的用法”的攻略: 什么是document.createEvent? document.createEvent()是 JavaScript 中的一个方法,它可以用于创建一个自定义事件对象。在 DOM 中,事件是与元素关联的行为,例如点击、滚动、鼠标移动等等。 以下是 document.createE…

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