混合构造函数,  就是 原型模式+普通构造函数方式
构造函数 定义对象的非函数属性.
原型方式  定义 对象的函数属性(方法)
 
function Car(sColor,iDoors,iMpg) {this.color = sColor;this.doors = iDoors;this.mpg = iMpg;this.drivers = new Array("Mike","John");
}Car.prototype.showColor = function() {alert(this.color);
};var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);oCar1.drivers.push("Bill");alert(oCar1.drivers);    //输出 "Mike,John,Bill"
alert(oCar2.drivers);    //输出 "Mike,John"
 
 
下面说下动态原型:
function Car(sColor,iDoors,iMpg) {this.color = sColor;this.doors = iDoors;this.mpg = iMpg;this.drivers = new Array("Mike","John");if (typeof Car._initialized == "undefined") {Car.prototype.showColor = function() {alert(this.color);};Car._initialized = true;}
}

不管实例化多少个 car对象,那么 showColor函数 只初始化一次.

 
 
 

转载于:https://www.cnblogs.com/Mr-Joe/archive/2012/05/18/2507619.html

JS 混合构造函数 和 动态原型相关推荐

  1. JS数据类型 构造函数 原型链

    js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类 ...

  2. js面向对象-组合使用构造函数模式和原型模式(使用最广泛、认同度最高)

    组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性 原型模式用于定义方法和共享的属性 优点:每个实例都有自己的实例属性的副本,但同时共享对方法的引用,最大限度的节省内存 function P ...

  3. JS面向对象的程序设计之创建对象_工厂模式,构造函数模式,原型模式-1

    前言:最近在细读Javascript高级程序设计,对于我而言,中文版,书中很多地方翻译的差强人意,所以用自己所理解的,尝试解读下.如有纰漏或错误,会非常感谢您的指出.文中绝大部分内容引用自<Ja ...

  4. Javascript定义类或对象之动态原型法

    在javascrip定义类和对象有很多种方法,但是,对于动态原型方法定义的方式,我还是很陌生的.今天看了js高级程序设计才发现,动态原型方法的基 本思想与混合的构造函数/原型方式相同,即在构造函数内定 ...

  5. JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象...

    一.仔细分析前面的原型模式创建对象的方法,发现原型模式创建对象,也存在一些问题,如下: 1.它省略了为构造函数传递初始化参数这个环节,结果所有实例在默认的情况下都将取得相同的属性值,这还不是最大的问题 ...

  6. javascript中组合使用构造函数模式和原型模式创建对象

    首先来讲一下构造函数创建对象.ECMAScript中的构造函数可用来创建特定类型的对象.请看下面示例了解一下构造函数模式: function Person(name, age, job){this.n ...

  7. JS面向对象系列之一[prototype,原型]

    文章目录 JavaScript 与面向对象 JavaScript 函数 JavaScript 构造函数与对象 函数与对象,prototype属性与__proto__属性 函数的prototype作用- ...

  8. JS中“创建对象”及“通过原型创建对象”浅析

    一.创建对象的几种方式 1.各自独立声明模式 var box1 = new Object(); //声明第一个对象并给各属性赋值 box1.name = 'Lee'; box1.age = 100; ...

  9. JS打字效果的动态菜单代码分享

    这篇文章主要介绍了JS打字效果的动态菜单,推荐给大家,有需要的小伙伴可以参考下. 这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 小提示:浏览器中如果不能正常运 ...

最新文章

  1. TVM实现hardware backend
  2. C++中 list容器的用法
  3. OpenCV3编程入门(毛星云)之用滚动条控制两图片的混合
  4. Kickstart 多系统安装配置
  5. 树的同构模板题(法1.最小表示法+法2.树哈希)
  6. php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程
  7. C++强化之路之线程池开发整体框架(二)
  8. 成为一名专业的前端开发人员,需要学习什么?
  9. Eclipse集成lombok插件 解决@Data标签get/set方法找不到异常
  10. @JsonSerialize的使用
  11. 递归解决字符串逆序输出
  12. 显卡识别为Microsoft基本显示适配器,安装9700k核芯显卡HD630驱动或安装其他核显驱动
  13. origin数据平滑_Origin平滑曲线如何设置
  14. 种草平台--持续更新
  15. 鸿蒙5G的营业执照,华为鸿蒙系统疑似被曝光 工信部向三大运营商颁发5G牌照​...
  16. 【51单片机】 蜂鸣器发声程序
  17. jQuery 实现页面关键字查询
  18. 静态单赋值(一)—gcc中的支配树
  19. 关于html 背景图片的引用格式
  20. 关于电子邮件客户端设计中QQ邮箱授权码问题。(运行提示535错误,说授权码error。)

热门文章

  1. java 线程内存模型_JAVA内存模型与线程
  2. 安装eclipse的android adt 插件,eclipse安装ADT插件
  3. 指定跳转_炸裂!PPT能一键统一色彩,还能一键跳转到指定颜色
  4. 减少php,如何减少PHP代码?
  5. mapbox 导航_寻宝风格导航地图 Treasure 诞生记 | Mapbox 地图设计思路
  6. 求最大公约数(辗转相除)
  7. Matplotlib - bar(条形图)
  8. 图像算法八:【图像分割】边缘检测(Roberts,Sobel,canny)、霍夫变换(hough)、阈值分割、区域分割
  9. Coursera机器学习编程作业Python实现(Andrew Ng)—— 2.1 Logistic Regression
  10. Spark灰度发布在十万级节点上的实践