OOP是面向对象编程(Object Oriented Programming)。集于一身,最终目的是各司其职,让每个职责的只关注自己那块,其他的不管丢给下一个人。比如说,一个页面,对于客户,只要能看到漂亮的页面即可;对页面设计师,只要关注页面图片的设计即可;对于前端工程师,只需要关注页面实现即可;对于后台工程师,只要关注交互的数据即可。

    我是前端开发,我就针对于前端的OOP再细分分析下。对于html页面,如果仅仅只是展示,只要知道页面url即可;对于样式设计,只要添加css文件url即可;对于动态效果,只要添加js文件url即可。到这里为止,是不是发现我们都只要知道下一个的入口就可以了。那我把这个再带入到js文件中,我想要实现一个功能,这里用jquery框架。
        1.给一个按钮添加一个点击事件,并且输出一句话。
        首先,我就应该想实现它需要做哪些准备?对于DOM的处理,是不是需要在标签都存在了才能得到对象?也就是我们所说的加载完成后处理。加载完成后,我就想是不是可以直接添加事件了?如果在有n多的事件监听情况下,难道要在文件中平铺n个事件监听?那样会不会到最后自己也不知道是谁是谁了?如果这样不方便,那我还是按照功能模块区分,如下所示:

html中

    <div class="container">
<div>
<button class="btn">点我</button>
</div>
<div class="content1"></div>
<div class="content2"></div>
</div>
js中
        var testObject = {
init: function(){
this._btnEvent();
},
_btnEvent: function(){
$(".btn").click(function(){
console.log("我是click!");
})
$(".btn").mouseover(function(){
console.log("我是mouseover!");
})
$(".btn").mouseout(function(){
console.log("我是mouseout!");
})
}
} $(function(){
testObject.init();
})

  这样有没有感觉稍显清晰?同一个模块的事件放在同一个方法体下,易于管理,看起来也舒服些。

  2.接下来我想实现点击按钮后,给一个模块填充内容。

          var testObject = {
init: function(){
this._btnEvent();
},
_btnEvent: function(){
$(".btn").click(function(){
var arr = [
"我是item1",
"我是item2",
"我是item3"
];
var p = "";
for(var i = 0, len = arr.length; i < len; i++){
p += "<p>"+arr[i]+"</p>";
}
$(".content").append(p);
})
}
} $(function(){
testObject.init();
})

感觉看着还成,因为代码少,不会有多少影响。如果我还给另一个模块增加内容。

var testObject = {
init: function(){
this._btnEvent();
},
_btnEvent: function(){
$(".btn").click(function(){
var arr1 = [
"我是item1",
"我是item2",
"我是item3"
];
var p = "";
for(var i = 0, len = arr1.length; i < len; i++){
p += "<p>"+arr1[i]+"</p>";
}
$(".content1").append(p); var arr2 = [
"我是模块1",
"我是模块2"
];
var div = "";
for(var i = 0, len = arr2.length; i < len; i++){
div += "<div>"+arr2[i]+"</div>";
}
$(".content2").append(div);
})
}
} $(function(){
testObject.init();
})

这个看起来是不是有点多了?如果我想再添加一个功能。。。连续性功能的平铺,会让人看着累,找一个内容要找半天,更不易于管理。为了避免不要这么累,我做以下操作。

var testObject = {
init: function(){
this._btnEvent();
},
_btnEvent: function(){
$(".btn").click(function(){
// 功能1入口
addTest1();
// 功能2入口
addTest2();
})
$(".btn").mouseover(function(){
// console.log("我是mouseover!");
})
$(".btn").mouseout(function(){
// console.log("我是mouseout!");
})
}
} function addTest1(){
var arr1 = [
"我是item1",
"我是item2",
"我是item3"
];
var p = "";
for(var i = 0, len = arr1.length; i < len; i++){
p += "<p>"+arr1[i]+"</p>";
}
// 如果还要添加其他功能的操做,还可以添加其他方法
// becomeMan();
// ...
$(".content1").append(p);
} function addTest2(){
var arr2 = [
"我是模块1",
"我是模块2"
];
var div = "";
for(var i = 0, len = arr2.length; i < len; i++){
div += "<div>"+arr2[i]+"</div>";
}
$(".content2").append(div);
} $(function(){
testObject.init();
})

  这样看起来是不是舒服多了?我还可以在方法体中,再开辟新的方法,互不影响,看着代码也整洁美观些。

  综上所述,在一个方法体最好只处理一个功能,不要把多个功能蹂在一起。牢记,要各司其职。

  如果有讲的不好或者不对的方法,欢迎拍砖。

OOP感想的更多相关文章

  1. oop作业二—circle

    oop作业-circle 题目描述 编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来. 要求: 输入输出采用cin和cout. 建立一个工程,将程序写成两个.cpp和一个.h的形 ...

  2. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  3. c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

    字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...

  4. 一个简单oop的changeTab

    好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...

  5. Python OOP(面向对象编程)

    一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...

  6. OOP,WEB开发实用小技巧

    偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...

  7. 从OOP的角度看Golang

    资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...

  8. Building Modern Web Apps-构建现代的 Web 应用程序(一些感想)

    <iframe src="http://channel9.msdn.com/Series/MVA-China/Web20140611A01/player?h=540&w=960 ...

  9. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

随机推荐

  1. MFC学习-第4课 消息机制和MFC作图

    转自: 1.http://blog.sina.com.cn/s/blog_6b5180bf01012kbz.html 2.http://blog.csdn.net/happyhhb/article/d ...

  2. Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 一

    Latent Semantic Analysis (LSA) Tutorial 译:http://www.puffinwarellc.com/index.php/news-and-articles/a ...

  3. bs4_2

     QQ:231469242 欢迎交流 Parsing HTML with the BeautifulSoup Module Beautiful Soup是用于提取HTML网页信息的模板,Beautif ...

  4. Java数据库——事务处理

    在数据库中执行5条SQL语句,这些SQL语句本身需要保持一致,即要么同时成功,要么同时失败 事务基本操作 //============================================= ...

  5. 当SVN服务器端IP地址发生变化时,客户端重新定位

    第一种方法: 重新设置URL: 第二种方法: 找到客户端数据库文件 ,在隐藏的文件夹.svn中,找到文件夹中的文件 *.db文件 ,用SQLite打开,修改表Repository中的数据

  6. Nvidia Nsight + .NET

    https://devtalk.nvidia.com/default/topic/804306/nsight-4-5-can-t-debug-net-applications/ http://comm ...

  7. TCP的三次握手与四次分手

    TCP的位置 TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层: 在第二层上的数据,我们把它叫Frame,在 ...

  8. Java 自动装箱与拆箱

    Java 自动装箱与拆箱(Autoboxing and unboxing)   什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供 ...

  9. Effective Objective-C 2.0 — 第12条:理解消息转发机制

    11 条讲解了对象的消息传递机制 12条讲解对象在收到无法解读的消息之后会发生什么,就会启动“消息转发”(message forwarding)机制, 若对象无法响应某个选择子,则进入消息转发流程. ...

  10. Web 安全测试

    http://blog.sina.com.cn/s/blog_a1bbddc70101dt12.html http://blog.csdn.net/pdn2000/article/details/64 ...