javascript设计模式Constructor(构造器)模式


Posted in Javascript onAugust 19, 2016

Constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。Object构造器用于创建特定类型的对象?准备好对象以备使用,同事接收构造器可以使用参数,以在第一次创建对象时,设置成员属性和方法值。

对象创建
创新新对象,在javascript中通常有两种方法:
 1.对象直面量方法
var newObj = {};

 2.构造器的简洁方法
var newObj = new Object();
在Object构造器为特定的值创建对象封装,或者没有传递值时,它将创建一个肯那个对象并返回

 对象赋值的方法:
 1.“点”方法

//设置属性
newObj.name = 'LanFeng';
//获取值
var user= newObj.name;

 1.中括号方法

//设置属性
newObj["name"]= 'LanFeng';
//获取值
var user= newObj["name"];

 1.Object.defineProperty (适用ECMAScript5)

//设置属性
Object.defineProperty(newObj,"name",{
  value:"LanFeng",
  writable:true,
  enumerable:true,
  configurable:true
})

 1.Object.defineProperties

//设置属性
 Object.defineProperties(newObj,{
   "someKey":{
    value:"Hello Js",
     writable:true
  },
  "anotherKey":{
    value:"Foo bar",
    writable:false
  }
})

Javascript不支持类的概念,但它确实支持与对象一起用的特殊constructor函数,通过在构造器前面加new关键字,告诉js像使用构造器一样实例化一个新对象,并且对象成员由该函数定义。
在构造器内,关键字this引用新创建的对象。回顾对象创建,基本的构造器:

function Car(model,year,miles){
  this.model = model;
  this.year = year;
  this.miles = miles;
  this.toString = function(){
  return this.model + "has done" + this.miles +"miles";
  }
}
//创建实例化对象

var civio = new Car("Honda Civio",2009,20000);

var mondeo= new Car("Ford Mondeo",2009,5000);

上面例子是一个简单的构造器模式版本,但它确实存在一些问题,其中一个问题是,它使用继承变得困难,另外一个问题是,toString()这样的函数是为每个使用Car构造器创建的新对象而分别重新定义的,这个不是最理想的,因为这种函数应该在所有的Car类型实例直接共享。

javascript中有有一个prototype的属性,调用js构造器创建一个对象后,新对象就会具有构造器原型的所有属性,通过这种方式,可以创建多个对象,并访问相同的原型,实现方法共享。

function Car(model,year,miles){
  this.model = model;
  this.year = year;
  this.miles = miles;

}


//原型函数
Car.prototype.toString = function(){
  return this.model + "has done" + this.miles +"miles";
  }

//创建实例化对象

var civio = new Car("Honda Civio",2009,20000);
var mondeo= new Car("Ford Mondeo",2009,5000);
console.log(civio.toString())
console.log(mondeo.toString())

现在toString()的单一实例就能够在所有Car对着之间共享。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js之软键盘实现(js源码)
Jan 30 Javascript
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
Javascript 对象的解释
Nov 24 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
Sep 11 Javascript
鼠标选择动态改变网页背景颜色的JS代码
Dec 10 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
javascript中this用法实例详解
Apr 06 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
Aug 19 #Javascript
Angular中$cacheFactory的作用和用法实例详解
Aug 19 #Javascript
AngularJS入门教程之更多模板详解
Aug 19 #Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 #Javascript
JS获取当前页面名称的简单实例
Aug 19 #Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 #Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
Aug 19 #Javascript
You might like
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
js 小数取整的函数
2010/05/10 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
Python构造函数及解构函数介绍
2015/02/26 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python pygame实现2048游戏
2018/11/20 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
vue常用指令代码实例总结
2020/03/16 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
超市端午节活动方案
2014/01/23 职场文书
学雷锋月活动总结
2014/04/25 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
力克胡哲观后感
2015/06/10 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server