1、通过new object方法或者字面量的方式创造对象

var obj = new Object()
var obj1 = {}

缺点:创造多个key同,value不同的对象的时候会产生大量的重复代码(重复的书写key=value)

2、工厂模式

function  CreateObj(...arg){let obj = new Object()let attrs = ['a','b','c']attrs.forEach((attr,index)=> {obj[attr] = arg[index] || null});return obj}

缺点:无法解决对象的识别问题(x.constructor === Object,x为工厂模式创建出来的对象)

3、构造函数模式(无法复用属性)与原型模式 (属性共享)

4、组合构造函数+原型模式

function People(name){this.name = name
}
People.prototype.say = function(){return 'hello'
}

5、动态原型模式(更好的封装,把所有属性都放在一个方法内部)

function People(name,fn){if(fn&& typeof fn !== 'function')throw 'fn must be a function'this.name = nameif(!fn){People.prototype.say = function(){return 'hello'}}else{this.say = fn}
}

6、Object.create(_pro_)

7、寄生构造函数(和工厂模式一样,只是调用方式上存在差异,就是在其他构造函数上的一个扩展,个人觉得没啥用)

function MyArray(){let ary = new Array()ary.test = function(){alert(ary[0]||'没有值')}return ary
}
let myarry = new MyArray()
myarry.test()

8、稳妥构造函数(内部不能使用this,私有属性不能定义在对象上,只能定义在方法内部,调用时不能用new)

function Student(name){let obj = new Object()let name = name //这里不能写为obj.name = nameobj.sayName = function(){return name}return obj
}
let stu1 = Student('zale')

转载于:https://www.cnblogs.com/zale-blogs/p/9570072.html

js创建对象的几种方式相关推荐

  1. js 创建对象的几种方式

    在 js 中可以通过 Object 构造函数或对象字面量来创建对象,但是这些方式在创建具有同样接口的多个对象需要重复编写很多代码. 因此,便有了几种常见的创建对象的模式,它们分别有着各自的优缺点,可以 ...

  2. js创建对象的七种方式

    JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产.接下来介绍七种非常经典的创建对象的方式,他们也 ...

  3. js创建对象的几种方式-转载

    1.工厂模式 弊端:没有解决对象的识别问题,即怎么知道一个对象的类型.  2.构造函数模式   与工厂模式相比:  1.没有显式的创建对象  2.直接将属性和方法赋给了this对象  3.没有retu ...

  4. js创建对象的几种方式(推荐)

    1.通过对象字面量创建 var a = {}; //最简单最直接的方法,是第二种的简写方式 2.通过object构造函数创建 var a = new Object(); // 这行代码创建了Objec ...

  5. JS 创建对象的七种方式

    1.工厂模式 function createPerson(name, job) {var o = new Object()o.name = nameo.job = jobo.sayName = fun ...

  6. JS 面向对象 ~ 创建对象的 9 种方式

    一.创建对象的几种方式 1.通过字面量创建 var obj = {};这种写法相当于:var obj = new Object(); 缺点:使用同一个接口创建很多单个对象,会产生大量重复代码 2.通过 ...

  7. 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象

    课程介绍 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

  8. 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  9. Java中创建对象的几种方式

    Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...

最新文章

  1. 【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法
  2. 094、Swarm 中最重要的概念(Swarm01)
  3. 据说这是中途接手别人项目时的场景
  4. shell调用python函数_shell调用python函数
  5. 编写干净的测试–验证或不验证
  6. CentOS+Nginx+Supervisor部署ASP.NET Core项目
  7. 智能工厂系统架构图_一些智能化弱电系统架构图,做方案可以用
  8. 女员工采购电影票抽中黄金 老板:必须上交 不上交就开除
  9. login-webflow.xml初步分析
  10. csharp: json to csharp
  11. opencv获得图片的像素宽度_OpenCV中获取图像某一像素值
  12. 【java进阶之路】(并发编程篇)1.Java线程
  13. 鸡啄米VS2010/MFC编程入门教程系列
  14. mysql修改information_schema表时的错误
  15. win7访问计算机需要密码,win7访问win10系统时需要输入用户名密码解决方法
  16. PHP批量上传一次点击选中多个
  17. 每日一书丨这本书献给所有铸就开源世界的人们
  18. 深兰科技出席“2022世界设计之都大会”,论剑工业设计高峰论坛
  19. 超火的口红机源码分享
  20. layer打开iframe弹层,传递与接收参数

热门文章

  1. React 第十二章 React思想
  2. Eclipse 创建 Maven 工程
  3. mysql存储过程实验几轮_想问下数据库中有关存储过程的实验,求大神!
  4. 谷歌pay服务端文档_Google pay 服务器验证
  5. layui table动态选中_layui后台管理—table 数据表格详细讲解
  6. 面试官:HashMap 为什么线程不安全?
  7. 记忆集、卡表、G1垃圾收集器简介
  8. 最近一段时间经历的事情即做事方式的总结
  9. php传递参数给asp.net,asp.net 传值总结
  10. 学会用Go解析复杂JSON的思路