javascript设计模式:构造器模式学习一
javascript 设计模式
1、简介
javascript是一种弱类型语言,不过类可以通过函数模拟出来
最常见的实现方法如下:
function Car(model)
{
this.model = model;
this.color = "red";
this.year = "2012";
this.getInfo = function(){
return this.model + " " + this.year;
}
}
接下来我们可以使用上边定义Car构造实例化对象,就像这样:
var myCar = new Car("hello");
myCar.year = "2015";
console.log(myCar.getInfo());
2、构造器模式
(1)创建对象的三种方法
var newObject = {};
var newObject = Object.create(null);
var newObject = new Object();
(2)四种方式可以将一个键值复制给对象
1)“点号”法
设置属性:newObject.someKey = "hello world";
获取属性:var key = newObject.someKey;
2)"方括号"法
设置属性:newObject["someKey"] = "hello world";
获取属性:var key = newObject["someKey"];
(3)使用原型构造器
function Car(model,year,miles){
this.model = model;
this.year = year;
this.miles = miles;
}
Car.prototype.toString = funtion(){
return this.model + "has done "+ this.miles;
}
通过上边的代码,单个toString()实例被所以的Car对象所共享。
javascript设计模式:构造器模式学习一的更多相关文章
- javascript设计模式——组合模式
前面的话 在程序设计中,有一些和“事物是由相似的子事物构成”类似的思想.组合模式就是用小的子对象来构建更大的对象,而这些小的子对象本身也许是由更小的“孙对象”构成的.本文将详细介绍组合模式 宏命令 宏 ...
- javascript 设计模式-----策略模式
在<javascript设计模式>中,作者并没有向我们介绍策略模式,然而它却是一种在开发中十分常见的设计模式.最常见的就是当我们遇到一个复杂的表单验证的时候,常常需要编写一大段的if和el ...
- JavaScript设计模式 - 迭代器模式
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示. 迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺 ...
- JavaScript设计模式 - 代理模式
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问 代理模式的用处(个人理解):为了保障当前对象的单一职责(相对独立性),而需要创建另一个对象来处理调用当前对象之前的一些逻辑以提高代码的效 ...
- JavaScript设计模式-组合模式(表单应用实现)
书读百遍其义自见 <JavaScript设计模式>一书组合模式在表单中应用,我问你答答案. 注:小编自己根据书中的栗子码的答案,如有错误,请留言斧正. 另:如有转载请注明出处,谢谢啦 &l ...
- javascript设计模式——模板方法模式
前面的话 在javascript开发中用到继承的场景其实并不是很多,很多时候喜欢用mix-in的方式给对象扩展属性.但这不代表继承在javascript里没有用武之地,虽然没有真正的类和继承机制,但可 ...
- JavaScript设计模式-----模板方法模式
模板方法模式是一种只需要使用继承就可以实现的非常简单点的模式. 模板方法模式有两部分组成,第一部分是抽象父类,第二部分是具体的实现子类.通常在抽象父类中封装了子类的算法框架,包括实现 一些公共方法以及 ...
- javascript 设计模式-----工厂模式
所谓的工厂模式,顾名思义就是成批量地生产模式.它的核心作用也是和现实中的工厂一样利用重复的代码最大化地产生效益.在javascript中,它常常用来生产许许多多相同的实例对象,在代码上做到最大的利用. ...
- javascript设计模式-组合模式
组合模式所要解决的问题: 可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象.可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象. 客户端代码必须区别对象简单对象和 ...
随机推荐
- bzoj 3757 树上莫队
感谢以下文章作者: http://blog.csdn.net/kuribohg/article/details/41458639 http://vfleaking.blog.163.com/blog/ ...
- 对于GTPv2协议头部的解析
参考3GPP TS 29.060 GTP的头部是可变的,GTP-C(control)和GTP-U(user)共同使用一个头部. GTP Header头部: -Version 用来标识GTP协议的版本, ...
- CentOS 6下搭建LAMP环境
第一步,使用Xshell管理工具连接远程服务器 第二步,输入服务器账号密码登录远程服务器 如果centos内置的yum源可用的软件偏少或者版本过低,请更新! 首先备份/etc/yum.repos.d/ ...
- iOS程序的启动图片图标规范
- Altium Protel PCB Layer
The layers themselves are grouped by their functional types: Signal Layers – Top Layer, Bottom Layer ...
- mysql 5.7源码安装
http://blog.itpub.net/29733787/viewspace-1590891/
- 强悍的javascript手势库
/** * Toucher * git:https://github.com/cometwo/Toucher-1 */ "use strict"; (function (root, ...
- (转)h264中avc和flv数据的解析
计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据(只有第一帧需要): 计算 NALUs 得到帧数据. 计算 AVCDecoderConf ...
- mysql_fetch_assoc 跟mysql_fetch_array 有什么区别?
mysql_fetch_assoc 得到的是关联数组. Array ( [0] => Array ( [title] => 特价9.9包邮 EFOLAR/依芙拉 BB粉润腮红粉 饼 蘑菇 ...
- UIBezierPath的使用(持续更新)
UIBezierPath的使用 1. 使用UIBezierPath绘制多边形 // 获取path UIBezierPath *aPath = [UIBezierPath bezierPath]; // ...