编写可维护的JS 06
7.事件处理
//典型用法
function handlerClick(event){
var popup = document.getElementById('popup');
popup.style.left = event.clientX+'px';
popup.style.top = event.clientY+'px';
}
1.隔离应用逻辑
隔离应用逻辑 /*
上述代码只用到了 clientX/clientY 两个属性。 但是却将event事件整个传入 。
*/
// 1 隔离应用逻辑 /*
上述例子中 操作popup的left/right值 算是一种应用逻辑,而这个应用逻辑可能其他地方也会操作 既然其他地方也会操作这个应用逻辑。我们就将它独立出来 。 */ //拆分应用逻辑
var myPopup = { handler:function(event){ this.showpopup(event);
}, showpopup:function(event){
var popup = document.getElementById('popup');
popup.style.left = event.clientX+'px';
popup.style.top = event.clientY+'px';
}
}; //调用
var obtn1=document.getElementById('btn1'); obtn1.addEventListener('click',function(event){ myPopup.handler(event); },false);
应用逻辑有可能被多处使用,如果正常写可能会被复制很多份,将应用逻辑和事件处理拆分开
2. 不要分发事件对象
/*
在1里面 只需要用到clientX 和clientY 但是却将event时间对象穿进去。 好的api 依赖是透明的。 showpopup方法只需要2个数据 而不是一个event 传递一个event进去反而将事情变得复杂。 */
//重写以上例子
var myPopup2 = {
handler:function(event){
event.preventDefault();
event.stopPropagation(); this.showpopup(event.clientX,event.clientY);
}, showpopup:function(x,y){ var popup = document.getElementById('popup');
popup.style.left = x+'px';
popup.style.top = y+'px';
}
};
//调用
var obtn2=document.getElementById('btn1'); obtn1.addEventListener('click',function(event){ myPopup2.handler(event.clientX,event.clientY); },false);
编写可维护的JS 06的更多相关文章
- 前端小白想要编写可维护的js
我是一名前端小白,之前没写过多少代码,心里没有代码质量这个概念,人人都说代码是团队的产物,应该将代码写规范,但是我对具体什么样的代码是可维护的是茫然的. 我没写过多少代码,本来好多东西就不咋会,每次给 ...
- 编写可维护的js代码
在工作中,制定一套统一的编码风格,可以提高开发效率,维护起来的也要容易很多,也能避免一些不必要的错误出现. 项目中常用的检查编码风格的工具JSLint.JSHint.JSCS.ESLint,,在这呢, ...
- 编写可维护的JS 05
5.UI层的松耦合 松耦合定义 每个组件尽量独立,修改一个不影响其他的组件 将Js从css中抽离 不要使用css表达式,因为浏览器会以高频率重复计算css表达式,严重影响性能,IE9不支持表达式 将C ...
- 编写可维护的JS 01
1.编程风格 缩进层级 使用制表符进行缩进 2个/4个空格缩进 语句结尾 不省略分号 行的长度 不超过80个字符 换行 在运算符后面换行 空行 在以下场景中添加: 方法之间 在方法中局部变量与第一条语 ...
- 编写可维护的JS 04
4.变量.函数和运算符 变量 变量声明提前,单var 函数声明 先声明fn再执行 函数声明不应出现在语句块中 函数调用间隔 函数名与左括号间无间隔 立即调用函数 (fuction(){}) 严格模式 ...
- 编写可维护的JS 03
3.语句和表达式 所有语句都应当使用花括号 if else语句 for 循环 while 循环 do...while try...catch...finally 花括号对齐方式 左括号在第一行语句末尾 ...
- 编写可维护的JS 02
2.注释 单行 //单行注释 多行 /* 多行注释 */ /** * 多行注释 * */ 使用注释 使用注释的原则是让代码更清晰 难于理解的代码 难于理解的代码都应添加注释 可能被误认为错误的代码 应 ...
- 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...
- 如何编写可维护的面向对象JavaScript代码
能够写出可维护的面向对象JavaScript代 码不仅可以节约金钱,还能让你很受欢迎.不信?有可能你自己或者其他什么人有一天会回来重用你的代码.如果能尽量让这个经历不那么痛苦,就可以节省不少时 间.地 ...
随机推荐
- IOS-时间与字符串互相转换
有时会遇到这种问题,须要把时间和时间戳互相转换 比方把"这种格式 或者是把""转换成"2014-07-16 15:54:36" 首先来第一个: 当前时 ...
- Setup Factory
Setup Factory 生成安装程序
- 我的小前端 (1)—— 安卓机和ios机的区别
没有什么特别新技术,就是记录我做移动端遇到的问题 2016-02-16 微信,支付宝和APP都会遇到这些问题 一.安卓机和ios机的区别 1.常用 <head> <me ...
- 20151113--JSTL
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- c++多线程同步使用的对象
线程的同步 Critical section(临界区)用来实现“排他性占有”.适用范围是单一进程的各线程之间.它是: · 一个局部性对象,不是一个核心对象. · 快速而 ...
- RandomAccessFile浅析
RandomAccessFile类中的write方法有以下的注意事项: 首先write方法每次都写入一个字节 api中write方法如下 public void write(int b) throws ...
- Android 利用剪切板(clipboardManager )实现数据传递
首先是系统剪切板的调用服务: ClipboardManager ClipboardManager=getSystemService(Context.CLIPBOARD_SERVICE); 然后是写入, ...
- hdu 5726 GCD 倍增+ 二分
题目链接 给n个数, 定义一个运算f[l,r] = gcd(al, al+1,....ar). 然后给你m个询问, 每次询问给出l, r. 求出f[l, r]的值以及有多少对l', r' 使得f[l, ...
- 不可综合的verilog语句分析
前半部分转自http://www.cnblogs.com/Mrseven/articles/2247657.html,后半部分为自己测试结果. 基础知识:verilog 不可综合语句 (1)所有综合工 ...
- 用C语言制作小型商品信息管理系统过程中的问题
大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...