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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
webpack配置的最佳实践分享
Apr 21 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
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
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python正则表达式re模块详细介绍
2014/05/29 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python批量查询域名是否被注册过
2017/06/21 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
python实现五子棋程序
2020/04/24 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
新闻专业应届生求职信
2013/10/31 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
创意婚礼策划方案
2014/05/18 职场文书
商务经理岗位职责
2014/07/30 职场文书
售房委托书
2014/08/30 职场文书
国庆节标语大全
2014/10/08 职场文书
公务员政审材料
2014/12/23 职场文书
2014年终个人总结报告
2015/03/09 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python