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 相关文章推荐
JS日历 推荐
Dec 03 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
Node.js的特点和应用场景介绍
Nov 04 Javascript
jquery中EasyUI实现同步树
Mar 01 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
vue实现倒计时获取验证码效果
Apr 17 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
Sony CFR 320 修复改造
2020/03/14 无线电
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php实现简单的上传进度条
2015/11/17 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python实现的希尔排序算法实例
2015/07/01 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
kafka-python批量发送数据的实例
2018/12/27 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
工作态度检讨书
2014/02/11 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
小学思想品德教学反思
2016/02/24 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers