js【面向过程编程】、好、 【init()、 GetData()、 bindData()、bindDom、 bindEvent()、buyProduct()、AddProductToCart()】*****************
1. 一般页面开发方式 【可读性差、可维护性差】------初级开发工程师
一般页面编写方法
var name = 'iphone8'
var description = '手机中的战斗机 '
var price = 0;
var domName = document.getElementById('pname')
var domPrice = document.getElementById('pprice')
var domad = document.getElementById('p-ad')
var domadd= document.getElementById('add')
var dombuy= document.getElementById('buy') window.onload=function(){
domName.innerHTML = name
domPrice.innerHTML = price
domad.innerHTML = description
domadd.onclick=function(){
price = 7000;
domPrice.innerHTML=price;
}
dombuy.onclick=function(){
price = 7000;
domPrice.innerHTML=price;
}
}
上述代码存在的缺点
可读性差:
放在一起,如果别人拿着你的代码二次开发,读的费劲
可维护性差:
比较难维护,一旦需求变更,需要读懂整个代码,然后再修改。
如果你辞职了,别人接收你的代码,更改就更难了。
呢么怎么办呢,
下面我们讲解如何使用函数来实现 – 面向过程编程
2. 面向过程编程【比较好的编程开发方式】------中级开发工程师
什么是面向过程编程:
面向过程就是使用函数将一个大的功能分成很多小功能,每个功能称之为一个过程,这就是面向过程编程。
我们可以考虑使用函数将原来写在一起的一坨的代码拆分成一个一个的独立的小功能
比如购买方法:
Function init()
{
GetData();
BindData();
BindEvent();
}
面向过程编写原则 – 单一功能原则 – 条理性编程法则
一般一个函数只包含某种类似的功能
我们在开发页面的时候:
一般将数据绑定相关的代码放在一个函数里面,取名:bindData()
一般将事件相关代码放在一个函数里面,取名:bindEvents()
一般定义一个init函数保存页面在初次加载的时候需要编写的代码:
我们还可以将某个功能专门用一个函数来保存,比如可以将购买产品这个功能专门放在一个函数里面,比如代码:【推荐的常用方法】
window.onload=function(){
init()
}
//我们一般定义一个函数init来保存页面初始化加载的时候代码
function init() {
//其他可能的代码
bindData()
//其他可能的代码
bindEvent()
}
//我们一般定义一个函数保存数据绑定相关代码
function bindData(){
domName.innerHTML = name
domPrice.innerHTML = price
domad.innerHTML = description
}
// 我们一般定义函数封装页面或者某个模块的 事件
function bindEvent(){
//将产品添加到购物车事件
domadd.onclick=function(){
AddProductToCart()
}
//立即购买事件
dombuy.onclick=function(){
buyProduct()
}
}
//购买产品
function buyProduct(){
}
//将产品添加到购物车
function AddProductToCart(){
}
3. 面向对象编程-------高级开发工程师
什么是面向对象编程
原型对象一般用于封装组件,开发一个网页模块的模板
原型对象一般用于封装组件,封装一个功能点的属性和方法。
比如开发京东产品详细信息模块:我们定义一个产品对象,包含名称,描述,添加到购物车等属性,
复制代码
function Sprite5(options){
//函数内容部设置属性
this._init(options);
}
Sprite5.prototype={
_init:function(options){ //只允许内部调用的方法【仅内部调用】
this.name=options.name;
this.age=options.age || 20;
this.color=options.color || 'red';
console.log(this.name);
},
show:function(ele){ //[可以不加参数]外部可以调用的方法不使用下划线
console.log(this.name + ele);
}
};
var s5 = new Sprite5({
name:'shimilygoodabc',
age:20
});
s5.show('yang');
http://www.cnblogs.com/shimily/p/6240016.html
http://www.cnblogs.com/shimily/p/6241032.html
js【面向过程编程】、好、 【init()、 GetData()、 bindData()、bindDom、 bindEvent()、buyProduct()、AddProductToCart()】*****************的更多相关文章
- Day4 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式、序列化与反序列化
一.装饰器 一.装饰器的知识储备 1.可变长参数 :*args和**kwargs def index(name,age): print(name,age) def wrapper(*args,**k ...
- 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法
1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...
- Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分
生成器表达式形式 直接上代码 # yield的表达式形式 def foo(): print('starting') while True: x=yield #默认返回为空,实际上为x=yield No ...
- yield的表达式形式、面向过程编程(grep -rl 'root' /etc)
一.yield的表达形式 def foo(): print('starting') while True: x=yield None#return 2 print('value :',x) g=foo ...
- python基础之生成器表达式形式、面向过程编程、内置函数部分
生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为 ...
- 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式
一.装饰器 一.装饰器的知识储备 不想修改函数的调用方式,但是还想在原来的函数前后添加功能 1.可变长参数 :*args和**kwargs def index(name,age): print(na ...
- JS 事件循环机制 - 任务队列、web API、JS主线程的相互协同
一.JS单线程.异步.同步概念 从上一篇说明vue nextTick的文章中,多次出现“事件循环”这个名词,简单说明了事件循环的步骤,以便理解nextTick的运行时机,这篇文章将更为详细的分析下事件 ...
- Golang面向过程编程-函数
Golang面向过程编程-函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是函数 简单的说函数的作用就是把程序里多次调用的相同的代码部分定义成一份,然后起个名字,所有的 ...
- 《Essential C++》读书笔记 之 面向过程编程风格
<Essential C++>读书笔记 之 面向过程编程风格 2014-06-18 2.2 调用(invoking)一个函数 2.2.1 Pass by Reference语义 在函数sw ...
随机推荐
- Java基础(六)--枚举Enum
枚举: 刚开始项目中没怎么用过,只知道能够实现作为项目中类似定义Constant的功能,然后知道枚举实现的单例模式几乎是最优雅的,所以, 想要深入完整的了解一下 1.基本特性: Enum.values ...
- thinkphp 5.0 “No input file specified”问题
最近在用thinkphp5.0,想要试一下强制路由模式,却发现一直报错, 在网上一通乱找,最后发现是因为不能正确识别path_info造成的, 解决方案就是在 public目录下修改 ".h ...
- Java基础——接口
一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...
- 数字图像处理技术在TWaver可视化中的应用
数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.常用的图像处理方法有图像增强.复原.编码.压缩等,数 ...
- Coin Toss(uva 10328,动态规划递推,限制条件,至少转至多,高精度)
有n张牌,求出至少有k张牌连续是正面的排列的种数.(1=<k<=n<=100) Toss is an important part of any event. When everyt ...
- Python&机器学习总结(二)
① Python中的Sort Python中的内建排序函数有 sort()和sorted()两个 list.sort(func=None, key=None, reverse=False(or Tru ...
- HDU_5783_DivideTheSequence
HDU_5783_DivideTheSequence 点击打开链接 题意: 生成尽量多的连续的子串,且子串的前缀和大于等于0,输出符合题意的子串的数量. 这题目是参加四月份的个人训练赛遇到的,挺水的 ...
- HTTP服务和APACHE
HTTP服务和APACHE 1. 跨Internet的主机间通讯 要通过Internet进行通信,至少需要一对套接字:其中一个运行在客户端,定义了一个唯一的客户进程,称之为ClientSocket,另 ...
- java 生成20位唯一ID,生成不会重复的20位数字----https://blog.csdn.net/weixin_36751895/article/details/70331781
java 生成20位唯一ID,生成不会重复的20位数字----https://blog.csdn.net/weixin_36751895/article/details/70331781
- css & no margin & print pdf
css & no margin & print pdf no header & no footer https://stackoverflow.com/questions/46 ...