js之面向对象----封装篇
学习了一天的面向对象总结一下,共分为三类
- -! 老规矩 第一部分是概念性知识!!! 面向对象编程,我们可以把他想象成我们在造人。一个对象便是一个人,这个人有胳膊有腿,这便是一个对象的属性或者方法。。然后再通过用户的操作指令(click,hover等)来调用我们的js(我们制造的小人),控制我们的小人来执行不同的动作!
#_# 貌似我解释的够抽象。。。
当然了面向对象最大的优点就是复用性强、节省代码、提高开发效率、下来来完成我的处女作文章。。。
1、工厂模式
- -# 学习了这个模式真的挺受教的,开始怎么写都有错误,最后通过问了下朋友才弄明白,原来 下面的例子中 var obj = new Object();
这句话中的Object 是不可以改变的,他是js对象(我是这么认为的,如有不对请指出) 当然这句话也可以这么写
var obj = {}; 或者 var obj = new function(){};
//从这几种方式我想大家应该可以猜到我们var obj 只要是等于一个对象({})就是可以的。
function box(name,age,fuck){
var obj = new Object(); // windows 对象
obj.name = name;
obj.age = age;
obj.run = function (){
return fuck;
};
return obj;
};
var bb = box('小明','38','北京市');
console.log(bb.run()); //北京市
注: 工厂模式生产出来的实例不支持用 prototype 继承!所以为了后期维护代码,不建议经常使用。
看到一篇文章上说,不让使用this 或者 new 的时候使用这种工厂模式。。。有点不懂,,什么情况会不能使用this 或者new 呢??
实在搞不懂这种写法什么时候会用到。。。。好吧不纠结了。。知道这种写法就好。。。。
2、构造函数
也是大家喜欢用的一种方式(更完美的是+原型模式混合着写),
function dog(){
this.cat = 123;
this.mao = 456;
this.stu = function(){
console.log(this.mao);
}
};
//console.log(typeof dog);
3、原型模式 (继续上面构造函数的例子)
dog.prototype.gou = function(){
console.log(this.mao);
};
var ani = new dog();
//ani.gou(); 456
//console.log(ani); dog {cat: 123, mao: 456, stu: function, gou: function}
2和3加起来就是个人认为就是完美的开放方式啦。。。。原型+构造函数。
第一次总结这么多。。想想还有些鸡冻呢。。。如何说的不对的地方,还请指出。。
咦? 貌似面向对象还缺一部分吧。。。 貌似还有继承。。除了继承还有其他的嘛? 明天再研究。。。去吃饭。。。。
js之面向对象----封装篇的更多相关文章
- 深入js的面向对象学习篇(封装是一门技术和艺术)——温故知新(二)
下面全面介绍封装和信息隐藏. 通过将一个方法或属性声明为私用的,可以让对象的实现细节对其它对象保密以降低对象之间的耦合程度,可以保持数据的完整性并对其修改方式加以约束.在代码有许多人参与设计的情况下, ...
- JS难点--面向对象(封装)
我觉得js的难点之一就是面向对象编程. 面向对象 它是一种编程思想,它在写法上比面向过程相对来说复杂一些: 以下是我学习中关于面向对象的知识点总结: 1.什么是对象 从广义上说,"一切皆 ...
- 深入js的面向对象学习篇(继承篇)——温故知新(三)
写这篇有关继承的文章时,突然想起,几天前的面试.因为习惯在学习知识的时候加上自己的理解,很喜欢用自己话来解释,于是乎当面试被问起继承原理时,噼里啪啦一大堆都是自己组织的话,(也可能是因为个人紧张.外加 ...
- 深入js的面向对象学习篇——温故知新(一)
在学习设计模式前必须要知道和掌握的***. 为类添加新方法: Function.prototype.method = function(name,fn) { this.prototype[name] ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析
作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析
作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...
随机推荐
- MessageBox()功能
MessageBox()功能.这是一个非常频繁使用的Win32 API,在屏幕上显示一个窗体,提出问题,并等待用户输入.它的原型是 int MessageBox(HWND hwnd,LPCTSTR l ...
- 【Android 应用程序开发】 Fragment 详细说明
笔者 : 汉书亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragmen ...
- [C++]四种方式求解最大子序列求和问题
问题 给定整数: A1,A2,-,An,求∑jk=iAk 的最大值(为方便起见,假设全部的整数均为负数,则最大子序列和为0) 比如 对于输入:-2,11,-4,13,-5,-2,答案为20,即从A2到 ...
- 左右PHP自增力、神秘递减操作
首先看一个面试题: $a = 1; $b = &$a; if ($b == $a++) echo "true"; else echo "false"; ...
- 交叉编译libxml2
请勿用于商业用途,转载请注明出处! xml的优势就是可以方便的管理配置项,libxml2是c语言实现的xml管理库,眼下项目须要ARM下的版本号,libxml2编译过程例如以下: 0.准备工作 下载地 ...
- redis内存管理代码的目光
zmalloc.h /* zmalloc - total amount of allocated memory aware version of malloc() * * Copyright (c) ...
- web 环境项目(intellj部署的tomcat) 重启时报 Exception in thread "HouseKeeper" java.lang.NullPointerException (转)
Exception in thread "HouseKeeper" java.lang.NullPointerException at org.logicalcobwebs.pro ...
- ubuntu,从一个新用户,要转到新用户的命令行操作
shibo-ubuntu@ubuntu:~$ sudo useradd karen [sudo] password for shibo-ubuntu: shibo-ubuntu@ubuntu:~$ ...
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程[原理篇] 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千 ...
- STL源代码分析——STL算法merge合并算法
前言 因为在前文的<STL算法剖析>中.源代码剖析许多.不方便学习.也不方便以后复习,这里把这些算法进行归类.对他们单独的源代码剖析进行解说.本文介绍的STL算法中的merge合并算法. ...