OOP感想
OOP是面向对象编程(Object Oriented Programming)。集于一身,最终目的是各司其职,让每个职责的只关注自己那块,其他的不管丢给下一个人。比如说,一个页面,对于客户,只要能看到漂亮的页面即可;对页面设计师,只要关注页面图片的设计即可;对于前端工程师,只需要关注页面实现即可;对于后台工程师,只要关注交互的数据即可。
html中
<div class="container">
<div>
<button class="btn">点我</button>
</div>
<div class="content1"></div>
<div class="content2"></div>
</div>
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感想的更多相关文章
- oop作业二—circle
oop作业-circle 题目描述 编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来. 要求: 输入输出采用cin和cout. 建立一个工程,将程序写成两个.cpp和一个.h的形 ...
- jQuery源码学习感想
还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- 一个简单oop的changeTab
好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...
- Python OOP(面向对象编程)
一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- 从OOP的角度看Golang
资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...
- Building Modern Web Apps-构建现代的 Web 应用程序(一些感想)
<iframe src="http://channel9.msdn.com/Series/MVA-China/Web20140611A01/player?h=540&w=960 ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
随机推荐
- UrlEncode编码/UrlDecode解码 - 站长工具
http://tool.chinaz.com/tools/urlencode.aspx
- Android学习笔记——ListView
该工程的功能是实现在一个activity中显示一个列表 以下代码是MainActivity.java中的代码 package com.example.listview; import java.uti ...
- CURL常用命令--update20151015
下载单个文件,默认将输出打印到标准输出(STDOUT)中 curl http://www.centos.org 通过-o/-O选项保存下载的文件到指定的文件中:-o:将文件保存为命令行中指定的文件名的 ...
- 关于win10输入法问题(打不出中文)解决方法
提问过windous10打不出字,通过安装第三方输入法和所有有关切换的快捷键都没用,现在找到了解决方法 win键+x,打开命令提示符,输入ctfmon,回车 这样就能看到桌面右下角的输入法上面的叉叉消 ...
- phpmyadmin 链接远程mysql
这个只是自己的笔记 新手 不记下来以后又忘记了~ 在这以前已经给mysql设置了可以远程连接的账户 版本 phpMyAdmin-4.2.11-all-languages 解压到D盘下www 本地环 ...
- 轻取帝国CMS管理员密码
“帝国”CMS是一套著名的PHP整站程序,是国内使用人数最多的PHPCMS程序之一.令人无奈的是,“帝国”虽然把势力壮大了,却忽略了自身防护的建设,结果在黑客攻击下,“帝国”沦陷了.“帝国”CMS曝出 ...
- svn branch and merge(svn切换分支和合并)详解
下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:http://svnbook.red-bean.com/en/1.5/svn-b ...
- DWZ框架中ajax提交文件表单的处理(关闭当前dialog + 刷新父级navTab)
先重点关注两个js文件:dwz.ajax.js和dwz.core.js 流程: 1.回调iframeCallback <form xx enctype="multipart/form- ...
- 在linux命令行中直接执行php命令
有时候用浏览器调试太麻烦,想在linux命令下直接执行php代码 php -r 'echo 0500;'
- python基础教程1
python作为一种编程语言,诞生于1990年左右,算是一门比较年轻的语言(也算是90后吧),它是面向对象的,但不同于JAVA\C#那么严格要求一切皆对象,更接近于C++,是面向过程和面向对象的结合: ...