工厂模式(不推荐)

var sayName = function(){return this.name;
};function createPerson(name,age){var obj = {};obj.name = name;obj.age = age;obj.sayName = sayName;return obj;
}var newPerson = createPerson("Oliver",18);
console.log(newPerson.sayName());
  1. 应该把方法放在函数的外面,避免重复创建该方法;

  2. 定义的不是构建函数,因该使用var 方法创建实例,而不是new 方法;

  3. 不要忘记在函数的最后return obj;

构造函数模式(不推荐)

var sayName = function(){return this.name;
};function Person(name,age){this.name = name;this.age = age;this.sayName = sayName;
}var newPerson = new Person("Oliver",18);
console.log(newPerson.sayName());
  1. 使用this指代,函数无需明确return;

  2. 应该把方法放在函数的外面,避免重复创建该方法;

原型模式(不推荐)

var sayName = function(){return this.name;
};function Person(){};
Person.prototype.name = "Oliver";
Person.prototype.age = 18;
Person.prototype.sayName = sayName;var newPerson = new Person("Oliver",18);
console.log(newPerson.sayName());
  1. 函数中不对属性进行定义而是用prototype;

组合使用构造函数模式和原型模式(推荐)

function Person(name,age){this.name = name;this.age = age;
};Person.prototype.sayName = function(){return this.name;
};var newPerson = new Person("Oliver",18);
console.log(newPerson.sayName());
  1. 将所有属性定义在函数中(构造函数方式);将所有方法定义在prototype中(原型方式);

动态原型模式(推荐)

function Person(name,age){this.name = name;this.age = age;if (typeof Person.sayName != "function"){Person.prototype.sayName = function(){return this.name;};}
};
var newPerson = new Person("Oliver",18);
console.log(newPerson.sayName());
  1. 这里判断属性是否为function 以避免重复创建;

细节:js 创建对象的几种模式举例相关推荐

  1. js创建对象的几种常用方式小结(推荐)

    (转http://www.jb51.net/article/25093.htm) 第一种模式:工厂方式 复制代码 代码如下: var lev=function(){ return "脚本之家 ...

  2. JavaScript中的对象,如何创建对象,创建对象的7种模式

    ECMA-262把对象定义为:"无需属性的集合,其属性可以包含基本值.对象或者函数."严格来讲,这就相当于说明对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名 ...

  3. JS创建对象的三种方法

    在JavaScript中,对象是一组无序的相关属性和方法的集合.所有的实物都是对象,例如,字符串.数值.数组.函数等. 下面我会介绍三种创建对象的方法. 一.通过字面量创建对象 其语法格式如下: va ...

  4. 细节:js 对象继承的几种模式举例

    原型链继承 function Person(){};Person.prototype = {constructor: Person,name: "Oliver" };functio ...

  5. JS基础--ES5创建对象的7种模式

    以下内容总结自<JavaScript高级程序设计(第3版)> 一. 工厂模式 ES5中无法创建类,所以开发人员用函数封装以特定接口创建对象的细节. function createPerso ...

  6. js创建对象的几种方法

    工厂模式 工厂模式非常直观,将创建对象的过程抽象为一个函数,用函数封装以特定接口创建对象的细节.如下所示: function createStudent(name,sex,grade){ var o ...

  7. js创建对象的几种方法及继承

    创建对象 通过Object构造函数或对象字面量创建单个对象  这些方式有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为了解决这个问题,出现了工厂模式.   工厂模式    考虑在ES ...

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

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

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

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

最新文章

  1. c语言五个整数排序,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
  2. 2021年人工智能全球最具影响力学者榜单AI 2000发布
  3. Python分布式爬虫-elasticsearch搭建搜索引擎
  4. 统计学习方法第三章作业:一般k邻近、平衡kd树构造、kd树邻近搜索算法代码实现
  5. 如何用Python批量修改文件名?
  6. 遗传算法求函数最大值实验_小知识:什么是遗传算法
  7. linux开机自动联网设置
  8. GUI编程(一)-----概述
  9. 金山毒霸遭国际评测组织除名
  10. MATLAB 求导、符号计算
  11. Flink Window TOPN: The window can only be ordered in ASCENDING mode.
  12. ESPHome 和 Home Assistant传感器之TMT6000 环境光握手
  13. UE4之添加开场动画
  14. 蔓迪、落健、heybro、达霏欣哪个效果更好?自然选蔓迪
  15. mysql 评论回复表设计_数据库设计——评论回复功能
  16. 如何设置VS的唯美背景
  17. deepin深度操作系统
  18. bootstrap导航窗格响应式二级菜单
  19. 青龙面板 JDC2.0.0扫码获取cookie教程
  20. php使用PdfParser搭配tcpdf解析pdf文件

热门文章

  1. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.3 架构设计中的重要概念...
  2. 总线控制内部eep_【上周回顾】小白如何自学单片机;电子专业的十个神总结;摩尔定律54年;电子工程师常弄混的总线分类汇总;他做成了半导体害怕他做的事...
  3. python 中cookie_详解Python中的Cookie模块使用
  4. python selenium xpath_python+selenium十四:xpath和contains模糊匹配
  5. dropout层的作用_循环神经网络的 Dropout
  6. Stm32学了好久了,为什么做项目还是力不从心?
  7. c语言gsl,从GSL库获取C gsl_fit_linear()函数中的线性回归的p值
  8. 单调栈 or 线段树扫描线 ---- E. Delete a Segment [单调栈+二分] [扫描线处理空白位置的技巧乘2]
  9. 线段树 ---- 2021牛客多校第一场 J Journey among Railway Stations [线段树维护区间可行性判断]
  10. 半平面交比较好的博客