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 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
javascript折半查找详解
Jan 26 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
Jul 05 Javascript
AngularJS监听路由的变化示例代码
Sep 23 Javascript
Node.js读取文件内容示例
Mar 07 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
在layui框架中select下拉框监听更改事件的例子
Sep 20 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 Javascript
浅析vue中的nextTick
Dec 28 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
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
jquery操作select大全
2014/04/25 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
python实现绘制树枝简单示例
2014/07/24 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
Django如何配置mysql数据库
2018/05/04 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
基于Python的PIL库学习详解
2019/05/10 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python Gabor滤波器讲解
2020/10/26 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
业务员岗位职责
2013/11/16 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis