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

yizhihongxing

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回调函数应用 什么是回调函数 回调函数是指在一个函数A中调用另一个函数B时,将B作为参数传递给A,并且在A内部执行B的过程就叫做回调函数。 为什么需要回调函数 JavaScript中的函数都是一等公民,可以被当作参数来使用。回调函数在异步编程中非常常见,因为回调函数可以在异步操作完成后被执行,而不会阻塞整个程序的运行。 如何使用回调函…

    JavaScript 2023年5月27日
    00
  • JavaScript实现的拼图算法分析

    JavaScript实现的拼图算法分析 算法思路 初始化:将一张图片分成n * n等份,每个小格子被标识为一个数字; 将数字按照一定的顺序打乱,使得原本的图片被重新排列; 根据用户的选择,将其选中的两个数字调换位置,重新排列; 重复第三步直到拼图成功。 初始化拼图 在初始化阶段,我们需要将一张图片分成n * n等份,每个小格子被标识为一个数字。将图片分割成小…

    JavaScript 2023年5月28日
    00
  • javascript 网页跳转的方法

    下面是详细讲解“JavaScript 网页跳转的方法”的攻略: 1. 使用 location 对象 JavaScript 中的 location 对象包含了当前窗口的 URL 信息,可以通过 location 对象跳转到另一个页面。使用 location 对象的方式非常简单,只需要将想要跳转的 URL 赋值给它的 href 属性即可: location.hr…

    JavaScript 2023年5月18日
    00
  • JS实现获取来自百度,Google,soso,sogou关键词的方法

    获取来自百度、Google、soso、sogou等搜索引擎的关键词,可以通过以下步骤进行: 获取referral信息: 搜索引擎会将搜索关键词作为URL参数传递给你的网站,这些参数通常是在HTTP Referrer中传递的。因此,可以通过获取HTTP Referrer来获取搜索关键词。在JavaScript中,可以通过以下代码获取HTTP Referrer信…

    JavaScript 2023年6月10日
    00
  • JavaScript实现生成GUID(全局统一标识符)

    生成GUID是前端开发中非常常见的需求之一,在JavaScript中实现也非常简单,可以通过以下步骤完成: 导入uuid库 JavaScript本身并没有原生的生成GUID的函数,但是可以通过第三方库来实现,其中最常用的就是uuid库。可以通过以下命令将uuid库导入到项目中: npm install uuid –save 使用uuid库生成GUID 成功…

    JavaScript 2023年6月10日
    00
  • javascript 异步的innerHTML使用分析

    JavaScript 异步的 innerHTML 使用分析 在网站开发过程中,使用内部 HTML 设置元素内容是很常见的。通过使用 innerHTML 属性,我们可以将 HTML 代码动态插入到网页中。然而,在某些情况下,JavaScript 中这种操作可能会异步执行,这可能会在使用过程中引起问题。在这篇文章中,我们将讨论 innerHTML 方法的异步执行…

    JavaScript 2023年6月10日
    00
  • php实现数组中索引关联数据转换成json对象的方法

    当我们需要将 PHP 中的索引关联数组转换为 JSON 对象时,可以使用 json_encode() 函数完成这个任务。 下面是一个将 PHP 关联数组转换为 JSON 对象的示例代码: <?php $data = array( ‘name’ => ‘John’, ‘age’ => 30, ’email’ => ‘john@examp…

    JavaScript 2023年6月11日
    00
  • 一文详解如何根据后端返回的url下载json文件

    下面是详细讲解如何根据后端返回的url下载json文件的完整攻略: 方式一:使用Python实现 1. 安装必要的库 首先,我们需要安装requests库,用于发送HTTP请求: pip install requests 2. 发送请求获取JSON数据 接下来,我们需要使用requests库发送HTTP请求获取JSON数据: import requests …

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