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日

相关文章

  • 80道前端面试经典选择题汇总

    80道前端面试经典选择题汇总 简介 这是一篇涵盖80道前端面试经典选择题的文章,如果你即将进行前端面试或者正在为面试做准备,本篇文章会对你有所帮助。 攻略 1. 提前了解面试形式 在面试开始前,需要了解面试的形式(例如电话面试或者现场面试)、面试官的数量,以及面试的内容等。这有助于你的面试准备。 2. 学习和掌握基础知识 在准备面试时,重点学习和掌握基础知识…

    JavaScript 2023年6月1日
    00
  • 详解如何较好的使用js

    如何较好地使用 JavaScript 在网站开发中,JavaScript 是一个重要的工具。下面,我将分享一些如何最好地使用 JavaScript 的攻略,以便您可以将 JavaScript 发挥到最大的作用。 熟练掌握 JavaScript 语言基础 在编写 JavaScript 代码之前,首先需要了解基础语法,如数据类型、变量和运算符等。另外,熟练掌握流…

    JavaScript 2023年6月11日
    00
  • Cookies 和 Session的详解及区别

    我来详细讲解一下“Cookies 和 Session的详解及区别”。 Cookies 和 Session的概述 Cookies:保存在客户端,并且数据较为小巧,可以通过浏览器修改; Session:保存在服务端,因此不太容易被攻击,并且能够存储较为敏感的用户信息。 Cookies和Session的使用 Cookies的使用 Cookies的使用主要有以下几个…

    JavaScript 2023年6月11日
    00
  • 九种js弹出对话框的方法总结

    那么首先对于这个主题,我们需要先明确一下一些基本的概念。 什么是对话框 对话框是一种常用的网页中弹出提示信息的方式,类似于当前操作系统的模态对话框。它可以包含文本、按钮、表单等,显示给用户进行操作。 常见的对话框种类 在JS中,常见的对话框包括alert、confirm、prompt、layer、sweetAlert2、artDialog、mbox、weui…

    JavaScript 2023年6月11日
    00
  • 使用JS画图之点、线、面

    使用JS画图之点、线、面 本文介绍如何使用JavaScript(以下简称JS)来画图,并详细讲解绘制点、线、面的完整攻略。 准备工作 在开始绘图之前,我们需要准备以下文件: HTML文件:用于展示画布 CSS文件:用于美化画布 JS文件:用于绘制图形 首先,在HTML文件中创建一个画布元素: <canvas id="myCanvas&quot…

    JavaScript 2023年6月10日
    00
  • javascript实现鼠标点击页面 移动DIV

    实现鼠标点击页面移动DIV可以通过JavaScript来完成,这需要监听鼠标的事件,在事件中获取鼠标的坐标位置,然后动态修改DIV元素的位置。下面是完整的实现攻略: 监听鼠标事件 通过addEventListener方法,可以为页面添加鼠标事件监听器,捕获鼠标事件并在事件处理程序中处理。下面是一个简单的示例代码: document.addEventListe…

    JavaScript 2023年6月11日
    00
  • Ext JS框架中日期函数的用法及日期选择控件的实现

    Ext JS框架中提供了丰富的日期函数和日期选择控件,可以用于方便地处理日期相关的逻辑和交互。下面将分别详细介绍它们的用法和实现方式。 日期函数的用法 获取当前日期和时间 获取当前日期和时间可以使用 Ext.Date.now() 函数。它返回当前的时间戳,即距离1970年1月1日0时0分0秒的毫秒数。如果要将当前时间以指定格式显示,可以使用 Ext.Date…

    JavaScript 2023年6月10日
    00
  • javascript实现的多个层切换效果通用函数实例

    接下来我会详细讲解“javascript实现的多个层切换效果通用函数实例”的完整攻略,包括实现思路、代码实现和示例说明。 实现思路 本例中,我们使用 JavaScript 实现多个层(div)之间的切换效果。我们将所有的层使用 CSS 定位,每次切换时修改对应的层的 z-index 属性为最高,其他层的 z-index 属性为较低。同时,也需要使用 Java…

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