js创建对象的方法汇总

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日

相关文章

  • Javascript Math random() 方法

    JavaScript中的Math.random()方法是用于生成一个0到1之间的随机数的函数。以下是关于Math.random()方法的完整攻略,包含两个示例。 JavaScript Math对象的random方法 JavaScript Math的random()方法用于生成一个0到1之间的随机数。下面是random()方法的语法: Math.random(…

    JavaScript 2023年5月11日
    00
  • Javascript中常见的逻辑题和解决方法

    下面是Javascript中常见的逻辑题和解决方法的完整攻略。 一、逻辑题 在Javascript中,经常会遇到一些逻辑题。这些题通常要求我们根据给定的条件,编写相应的代码实现目标功能。下面是两个常见的逻辑题示例: 1. 反转字符串 给定一个字符串,如何将其反转输出? 样例 输入:”hello world”输出:”dlrow olleh” 2. 找出数组中的…

    JavaScript 2023年6月10日
    00
  • 获取客户端电脑日期时间js代码(jquery)

    获取客户端电脑日期时间的js代码可以通过javascript的内置Date对象或者第三方库jquery来实现。下面我将详细介绍两种获取客户端电脑日期时间的js代码。 使用Date对象获取电脑日期时间 javascript内置Date对象提供了获取电脑日期时间的方法。可以通过以下代码实现: var now = new Date(); var year = no…

    JavaScript 2023年5月27日
    00
  • javascript 系统文件夹文件操作及参数介绍

    下面是关于“javascript 系统文件夹文件操作及参数介绍”的完整攻略。 标题 JavaScript 系统文件夹文件操作 介绍 JavaScript 可以通过 Node.js 模块 fs 来操作系统文件夹和文件。其中,fs 模块提供了一系列的 API,让开发者能够以代码的方式对文件进行读写、更改、创建、删除等操作。 API 参数介绍 以下为几个常用的 A…

    JavaScript 2023年5月27日
    00
  • ES9的新特性之正则表达式RegExp详解

    ES9的新特性之正则表达式RegExp详解 简介 正则表达式(RegExp)是JavaScript中一个十分重要的概念,主要用于字符串匹配和替换。在ES9中,新增了一些正则表达式的新特性,本文将对这些新特性作详细的解释和演示。 s 修饰符 在ES9中,正则表达式新增了一个s修饰符,它代表匹配所有字符。在普通的正则表达式中,.只能匹配除换行符之外的所有字符。但…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript中return的用法

    让我们来详细讲解一下 “详解JavaScript中return的用法”: 什么是return? return 是 JavaScript 中的一个关键字,用于将函数的返回值返回给函数的调用者。 return 语句用于终止函数的执行,并返回函数的结果。 在函数中使用 return 在一个函数中,只要遇到 return 语句,函数的执行就会被中断,并将 retur…

    JavaScript 2023年5月27日
    00
  • 利用JS实现浏览器的title闪烁

    要实现浏览器中Title的闪烁,可以使用 JavaScript 语言来完成。下面是两种实现闪烁效果的方式。 方式一:使用 setInterval 实现闪烁效果 <script> // 定义变量 var title = document.title; var char = ‘●’; // 闪烁字符 var timer = null; // 创建函数…

    JavaScript 2023年6月11日
    00
  • JS数据分析数据去重及参数序列化示例

    下面是“JS数据分析数据去重及参数序列化示例”的完整攻略。 一、什么是数据去重? 数据去重是指在一组数据中删除重复数据的过程。在网站数据分析过程中,如果要统计某个特定行为的用户数,就需要进行数据去重。 二、如何进行数据去重? 数据去重的步骤如下: 1. 获取原始数据 获取需要进行去重处理的原始数据,这里我们以一个购物网站为例,假设有一个存储用户购买行为的数据…

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