JavaScript面向对象程序设计教程


Posted in Javascript onMarch 29, 2016

JavaScript中对象的定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。可以把对象想象成散列表,就是一组名值对(key:value),其中值可以是数据或函数,每个对象都是基于一个引用类型创建的。

理解对象

前面的博客里写过创建对象的方式有两种,一种是创建一个object的实例,另一种是使用对象字面量法:

var person = new Object();
person.sex = man;
person.name = bluce
person.age = 58;
person.sayHi() = function(){
console.log('Hello World!');
}

但更多的是采用下面一种方式

var person = {
sex:man,
name:'bluce',
age:'58',
sayHi:function(){
console.log('Hello World!');
}
}

创建对象

使用Object构造函数和对象字面量法都可以创建单个对象,但有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。常用的创建对象方式主要有工厂模式、构造函数模型、原型模式。

这里有自己的一个疑问:采用AMD规范后,编写的单个js文件,可以看做一个模块,也可以说是一个“类”,现在与JavaScript中的这个“类”概念有点混淆了,希望后面能分清应用场合吧。

关于JavaScript面向对象程序设计教程小编就给大家介绍到这里,希望对大家有所帮助!

 下面给大家补充JavaScript面向对象设计——工厂模式

 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程,可以用函数来封装以特定接口创建对象的细节。

之前在Java的DAO中用过这种设计模式,比较容易理解。

function createPerson(name,age,sex){
  var obj = new Object();
  obj.name = name;
  obj.age = age;
  obj.sex = sex;
  obj.sayHi() = function(){
    console.log(this.name);
  }; //引号不要漏掉,养成好的习惯
  return obj;
}
var person1 = createPerson("bluce",58,"man");
var person2 = createPerson("john",68,"man");

使用该函数可以根据接收的参数创建一个包含必要信息的Person对象。可以无数次地调用这个函数,每次都会返回一个包含三个属性和一个方法的对象。工厂模式解决了创建多个相似对象的问题,但没有解决对象识别的问题(如何知道一个对象的类型)

Javascript 相关文章推荐
JavaScript编程开发中的五个实用小技巧
Jul 22 Javascript
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
Jquery之美中不足小结
Feb 16 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
extjs每个组件要设置唯一的ID否则会出错
Jun 15 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
Node.js安装配置图文教程
May 10 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
小程序云开发实现数据库异步操作同步化
May 18 Javascript
js实现简单的点名器随机色实例代码
Sep 20 Javascript
jQuery实现图片加载完成后改变图片大小的方法
Mar 29 #Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 #Javascript
Jquery操作cookie记住用户名
Mar 29 #Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 #Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 #Javascript
AngularJS directive返回对象属性详解
Mar 28 #Javascript
Boostrap模态窗口的学习小结
Mar 28 #Javascript
You might like
dedecms模板标签代码官方参考
2007/03/17 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
公司周年庆典邀请函
2014/01/12 职场文书
商场拾金不昧表扬信
2014/01/13 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
标准版离职证明书
2014/09/12 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
装修公司管理制度
2015/08/05 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang