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 相关文章推荐
node.js中的fs.rename方法使用说明
Dec 16 Javascript
Bootstrap每天必学之面板
Nov 30 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
简单实现node.js图片上传
Dec 18 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
Vue完整项目构建(进阶篇)
Feb 10 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
原生js滑动轮播封装
Jul 31 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
PHP与已存在的Java应用程序集成
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
json原理分析及实例介绍
2012/11/29 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python中while和for的区别总结
2019/06/28 Python
Python递归函数特点及原理解析
2020/03/04 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
《蜗牛》教学反思
2014/02/18 职场文书
维稳工作情况汇报
2014/10/27 职场文书
欠条格式范本
2015/07/03 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
浅析InnoDB索引结构
2021/04/05 MySQL
Python编写nmap扫描工具
2021/07/21 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python