JavaScript面向对象的初步理解
来源:互联网 发布:淘宝处罚考试在哪里 编辑:程序博客网 时间:2024/05/21 05:59
面向对象
- 面向过程就是亲力亲为,事无巨细,面面俱到,步步紧跟
- 面向对象就是找一个对象,通过指挥得到结果
- 面向对象就是将执行者转变成指挥者的思维转变
- 面向对象不是面向过程的替代,而是面向过程的封装
面向对象的特性
- 抽象性
- 封装性
- 继承性
js是一个基于对象的多范式的编程语言,js中所谓的对象就是键值对的集合
如
{name:"chen",age:18,sex:"男"}
抽象性
- 抽取核心数据,剔除无关属性和行为组成一个对象.
- 对象不在特定的环境不能明确指明到底是啥
封装性
- 对象就是将数据和功能组合在一起即封装
js中对象就是键值对的集合
- 键值如果是数据(基本数据,复合数据,空数据)就称为属性
- 键值若是函数则称为方法
对象就是将属性和方法封装起来,方法就是将过程封装起来
继承性
- 自己没有但别人有的,拿过来成为自己的,为自己所有叫继承
- 继承是实现复用的一种手段
- js中没有明确的继承语法,一般都是按照继承的理念来实现继承,达到对象的成员扩充
- 因此,js中实现继承的方式非常多,其中最简单的方法叫混入(mix)
function mix(o1,o2){ for(var k in o2){ o1[k]=o2[k]; }}var o1={name:"chen"};var o2={age:18};mix(o1,o2);
面向对象思维
- 首先找对象
- 任何操作都交给对象完成
案例
面向过程做法
var div=document.createElement("div");//创建一个`div标签`document.body.appendChild(div);// 将div加入到页面中div.style.boder="1px solid red";//设置div样式div.style.width="400px";div.style.height="300px";
面向对象方式思考
- 抽取对象(div和body是对象)
- 分析属性和方法(加到,设置样式)
初级面向对象
function DivTag(){ this.myDiv=document.createElement("div");//创建div this.addToBody=function(node){//把div添加到节点 node.appendChild(this.myDiv); }; this.addStyle=function(name,value){//为div添加样式 this.myDiv.style[name]=value; }; this.addCss=function(option){//添加样式的方便写法 for(var k in option){ this.myDiv.style[k]=option[k]; } }; }var divTag=new DivTag();divTag.addToBody(document.body);//把div加入到body中divTag.addStyle("width","400px"); ...divTag.addCss(//通过传入对象形式数据修改div样式 { "boder":"1px solid red", "height":"200px" });
中级面向对象
function DivTag(){ this.myDiv=document.createElement("div"); this.addToBody=function(node){ node.appendChild(this.myDiv); return this;//这步很关键,让同一个对象可以连续调用多个方法 }; this.addCss=function(option){ for(var k in option){ this.myDiv.style[k]=option[k]; } return this;// };} new DivTag().addToBody(document.body).addCss({//封装性更高,更加简洁 width:"100px", height:"39px", boder:"1px solid blue" });
总结
通过以上三种方式实现同一案例的过程,把js面向对象的特性的优点展现的淋漓尽致,传统的面向过程的方法中,需求要啥就去干啥,一步一步的循规蹈矩的实现,若要创建多个div,则所有步骤都要重新再执行一遍,缺点不言而喻;
若按照面向对象的方法来处理,则先div的创建,加入到节点中,添加样式,等三大功能都放入到相应的函数中执行,然后再创建相应的对象,用对象来调用相应的方法来完成相应的功能,如此一来,若要新建div,只需多创建一个对象罢了,代码复用性大大提高,而且若数据封装性越高,则面向对象的程度越高,你想干啥就干啥,真正的达到为所欲为.这就是当老板指挥员工干活和自己当员工事事亲为的差别吧,当然再怎么面向对象,到最底层总要有相应的代码当员工,事事亲为,要不然怎么说面向对象不是面向过程的替代,而是面向过程的封装
阅读全文
0 0
- JavaScript面向对象的初步理解
- js开发: JavaScript 中的面向对象的初步理解
- 对js面向对象的初步理解
- JavaScript 中的面向对象的初步认识
- JavaScript面向对象的理解
- javascript面向对象 - 理解
- 【JavaScript】理解面向对象
- 面向对象技术的初步理解(一)
- JavaScript基于面向对象的理解
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 全面理解面向对象的 JavaScript
- 对javascript面向对象的理解
- Oracle Database 12c Security cookbook.pdf 英文原版免费下载
- Extreme NXT, 2nd Edition.pdf 英文原版免费下载
- lua支持中文变量名
- STM32 SysTick 滴答定时器原理及应用
- Pro ASP.NET Core MVC 2, 7th Edition.pdf 英文原版免费下载
- JavaScript面向对象的初步理解
- 清北学堂济南刷题班day1
- cs:app学习笔记(2):swap
- Centos搭建lnmp(php7.1+nginx+mysql5.7)
- wordpress提示要输入ftp账号和密码
- spring cloud feign做rpc
- LeetCode——376. Wiggle Subsequence
- C语言学习笔记(七)---一些刷题记录
- ctrip-apollo windows环境部署