js创建对象的方法汇总

yizhihongxing

JS创建对象的方法汇总

1. 工厂模式

function createPerson(name, age, gender) {
  var obj = new Object();
  obj.name = name;
  obj.age = age;
  obj.gender = gender;

  obj.sayName = function() {
    console.log(this.name);
  }

  return obj;
}

var person1 = createPerson('Tom', 23, 'Male');

工厂模式的优点是可以轻松创建多个相似的对象,但是没有办法识别对象的类型。

2. 构造函数模式

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;

  this.sayName = function() {
    console.log(this.name);
  }
}

var person1 = new Person('Tom', 23, 'Male');

构造函数模式用于创建多个相似的对象,但是它可以识别对象的类型,并且使用new操作符调用构造函数时,this关键字会绑定到新对象上,所以不需要手动创建新对象。

3. 原型模式

function Person() {}

Person.prototype.name = 'Tom';
Person.prototype.age = 23;
Person.prototype.gender = 'Male';
Person.prototype.sayName = function() {
  console.log(this.name);
}

var person1 = new Person();
person1.sayName();

原型模式用于设置对象共享的属性和方法,它允许多个实例共享同一个对象,从而节省了内存空间。但是,在修改一个实例的属性时,会因为找不到该属性而直接在原型上进行修改,最终导致其他实例的该属性被改变。

4. 组合模式

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender; 
}

Person.prototype.sayName = function() {
  console.log(this.name);
}

var person1 = new Person('Tom', 23, 'Male');
person1.sayName();

组合模式将构造函数模式和原型模式组合在一起使用,构造函数模式用于定义实例属性,原型模式用于定义共享属性和方法。这样就既可以识别对象类型,又可以节省内存空间。

5. 动态原型模式

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;

  if(typeof this.sayName != "function") {
    Person.prototype.sayName = function() {
      console.log(this.name);
    }
  }
}

var person1 = new Person('Tom', 23, 'Male');
person1.sayName();

动态原型模式将对象构造函数和原型对象组合在一起使用。它通过检查原型对象中是否包含需要的方法,如果不存在,则在运行时动态创建该方法。这样就可以在保证对象类型的同时,节省内存空间。

结论

以上就是JS创建对象的常见方法。每种方法都有其优缺点,应该根据实际情况选择合适的方法。如果需要创建多个相似的对象,则可以使用工厂模式、构造函数模式或组合模式。如果需要设置共享属性和方法,则可以使用原型模式或动态原型模式。

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

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

相关文章

  • js数组与字符串的相互转换方法

    为了让您更好地理解js数组与字符串的相互转换方法,我将提供以下步骤和示例: 将字符串转换为数组 方法1:使用split()函数将字符串转换为数组 使用split()函数可以将一个字符串根据指定分隔符分割成多个字符串,然后返回一个数组。 示例1: 假设有一个字符串str,其内容为”Hello,world! My name is Jack.”,现在我们需要将其按…

    JavaScript 2023年5月27日
    00
  • js判断鼠标位置是否在某个div中的方法

    要判断鼠标位置是否在某个div中,可以通过以下步骤实现。 第一步:获取鼠标的位置信息 要判断鼠标位置是否在某个div中,首先需要获取鼠标在页面中的位置信息。可以通过以下代码来获取: document.addEventListener(‘mousemove’, function(e) { var x = e.clientX; var y = e.clientY…

    JavaScript 2023年6月11日
    00
  • 整理Javascript数组学习笔记

    下面是针对“整理JavaScript数组学习笔记”的攻略: 1. 了解JavaScript数组基础知识 JavaScript数组是一种用于存储多个值的有序集合。数组是一种特殊的变量类型,使用方括号([ ])来表示。在数组中的每个元素都有一个唯一的索引。数组的索引通常从0开始,第一个元素的索引为0. 示例1:如何创建一个数组 var fruits = [‘Ap…

    JavaScript 2023年5月27日
    00
  • 零基础学习AJAX之AJAX的简介和基础

    零基础学习AJAX之AJAX的简介和基础 AJAX概述 AJAX(Asynchronous JavaScript And XML)指的是利用JavaScript的异步通信技术向后端服务器请求数据并更新页面的技术。它可以使页面部分刷新,而不是每一次都要刷新整个页面,从而增强了用户的体验。 AJAX的优点 减少了不必要的数据传输 优化了用户体验 减轻了服务器的负…

    JavaScript 2023年5月28日
    00
  • 如何编写一个d.ts文件的步骤详解

    当我们使用TypeScript编写JavaScript程序时,我们通常会使用某些第三方库或包。在使用这些库或包时,我们需要引入相应的声明文件,以便TypeScript能够正确地解析该库或包的类型,API和方法等信息。 声明文件一般以.d.ts为扩展名,可以手动编写,也可以使用工具自动生成。以下是编写一个d.ts文件的步骤: 步骤一:创建项目和声明文件 先创建…

    JavaScript 2023年5月27日
    00
  • js中的this的指向问题详解

    下面给出“js中的this的指向问题详解”的完整攻略: 一、概述 在JavaScript中,this关键字总是指向调用该函数的对象。但是,在不同的情况下,this指向的对象也会有所不同。因此,理解this的指向问题对于JavaScript编程非常重要。 二、this的四种绑定方式 this的指向主要有四种绑定方式: 默认绑定:独立的函数调用,this指向全局…

    JavaScript 2023年6月10日
    00
  • JavaScript数组类型Array相关的属性与方法详解

    一、JavaScript数组类型Array简介JavaScript中的数组(Array)是一种有序的数据集合,可以存储多个数据类型的值,访问数组中的元素可以通过下标或者索引的方式进行。 二、JavaScript数组类型Array相关的属性详解1. length:获取/设置数组的长度,也就是数组中元素的个数。示例一: let arr = [1, 2, 3, 4…

    JavaScript 2023年5月27日
    00
  • javascript类数组的深入理解

    JavaScript类数组的深入理解 JavaScript中的类数组是一个类似数组但却不是真正的数组的对象。它们通常具有length属性和对应的数字键,但是缺少了一些数组原型方法。JavaScript中的类数组包括函数中的arguments对象、HTMLCollection对象和NodeList对象等。 类数组的常用方法 转换为真正的数组 由于类数组不是真正…

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