总结
css架构结构 :
base : 共用样式
common: 通用控件样式
page: 页面级样式
js 架构结构:
base 位于三层最底层,职责一是封装不同浏览器下js的差异,提供统一的接口,依靠它来完成跨浏览器兼容的工作,职责二是扩展js语言底层提供的接口,让它提供 更多更为易用的接口,base层是给common层和page层提供接口。
common 位于三层的中间,依赖于base层提供的接口,common提供可供复用的组件,它是典型mvc模式中的M,和页面内的具体功能没直接关系,common层的功能是给page层提供组件。可以复用的
page层,
位于三层的最顶端 ,这一层和页面里的具体功能需求直接相关,是mvc模式的c,page层依敕于base层和common层,page层的功能是完成页面内的功能需求。
javascript: 对象编程
反方法写在原型里,可以被所有实例共享,实例化的时候,并不会在实例的内存中再复制 一份,而写在类里的行为,实例化的时候会在每个实例里复制一份。把实例写在内存消耗,没有特殊原因,推荐尽量把行为写在原型里。
用this._age来定义表明是私有的,不能当成公有的属性来调用 。提醒而已。
用get,set 方法来访问属性需要将相关的方法都 放到构造函数和里,和所有方法以都放到原型相比,这么做会占用更多的内存,但它可以更好地保护 属性,
function Animal(name){
var name;
this.getName=function(){
return name;
}
this.setName=function(o){
name=o;
}
}
function有两种不同的用法,作为函数,
直接使用 函数名()调用,this指向window作为类的构造函数,使用new 函数名()调用。this指向实例
命名空间
var GLOBAL={};
GLOBAL.namespace=function(str){
var arr=str.split("."),o=GLOBAL;
for(i=(arr[0]=="GLOBAL")?1:0;i<arr.length;i++){
o[arr[i]]=o[arr[o]]||{};
o=o[arr[i]];
}
}
GLOBAL.namespace("Dom"); //调用
继承代码
function extend(subClass,superClass){
var F=function();
F.prototype=superClass.prototype;
subClass.prototype=new F();
subClass.protype.constructor=subClass;
subClass.superclass=superClass.prototype;
if(superClass.protope.constructor==Object.prototype.constructor){
superClass.prototype.constructor=superClass;
}
}
function Animal(name){
this.name=name;
this.type="animal";
}
Animal.prototype={
say:function(){
alert("i'm a(an)"+this.type+",my name is "+this.name);
}
}
function Bird(name){
this.constructor.superclass.constructor.apply(this,autuments);
this.type="bird";
}
extend(Bird,Animal);
Bird.prototype.fly=function(){
alert("i'm flying");
}
var canary=new Bird("xiaocui");
canary.say(); // i'm a(an) bird,my name is xiaocui
Array
Array.prototype.each=function(fun){
for(var i=0,n=this.length,i<n;i++){
fun(this[i],i);
}
}
Array.prototype.clone=function(){
var o=[];
this.each(function(v,k){
o[k]=v;
})
return o;
}
Array.prototype.map=function(fun){
var o=[];
this.each(function(v,k){
o[k]=fun(v,k);
})
return o;
}
Array.prototype.Delete=function(a){
var o=this.clone();
for(var i=o.length,n=0;i>n;i--){
if(o[i]==a){
a.splice(i,1);
}
}
}
javascript 提供了一些内置类:Array,String,Function等。在javascript中,所有的内置类和自定义类,所有类的祖先类都是Object.如果想对所有对象都扩展方法,可以通过修改Object类的原型实现。
无论在类的构造 函数中还是在原型中,this都指向实例化的对象。
内置类的方法可以重写,但属性却不能重写。
修改内置类的原理型 非常方便,缺点是可能会带来冲突隐患,自定义的可以保护原型不修改,但它需要用new来实例化自定义类,相对麻烦 一些。
如果是小应用,不用过多浮头考虑可维护性,推荐使用前者,如果是大中型应用,需要考虑可维护性,推荐使用后者。
var node=document.getElementById("a");
typeof node // object;
对于常规属性,统一使用 node.xxxxx,对于自定义属性,统一使用 node.getAttribute("XXXX");
目标对象 e.target||e.srcElement
好的可维护 性的代码从四个方面获得:
代码的松耦合,高度模板化,将页面内的元素视为一个个模块,相互独立,尽量避免耦合过高的代码,从html,css,javascript,三个层面考虑模块化
良好的注释
注意代码的弹性,在性能和弹性的选择上,一般 情况下以弹性为优先考虑条件
严格按照规范编写代码
- 每周一书-编写高质量代码:改善C程序代码的125个建议
首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10 ...
- 《编写高质量代码--Web前端开发修炼之道》读书笔记
前言 这两周参加公司的新项目,采用封闭式开发(项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇<编写高质量代码--Web前端开发修炼之道>读书笔记吧 ...
- C# 《编写高质量代码改善建议》整理&笔记 --(一)基本语言篇
题记:这是自己的观后感,工作两年了,本来打算好好学习设计模式,或者作为客户端深入了解GPU编程的,但是突然发现还有这么一本书. <编写高质量代码改善建议>,感觉这正是自己需要的. 我是做 ...
- 《编写高质量代码:Web 前端开发修炼之道》 笔记与读后感
编写高质量代码:Web 前端开发修炼之道/曹刘阳著. —北京:机械工业出版社,2010.5 第一版 涉及到的知识点: 1. CSS Sprites 在国内很多人叫css精灵,是一种网页图片应用处理方式 ...
- 编写高质量代码_改善C++程序的150个建议 读书笔记
这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的 ...
- 编写高质量代码改善C#程序的157个建议——导航开篇
前言 由于最近工作重心的转移,原来和几个同事一起开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展.打个比方,现在已经上线的项目行政案件的Web管理网站(代码还没那么多相比较即将要 ...
- 编写高质量代码--改善python程序的建议(一)
原文发表在我的博客主页,转载请注明出处! 初衷 python是一个入门十分容易的编程语言,但是想要写好python却是一件不容易的事情,如果不是专业使用python的人,只是将python作为一个脚本 ...
- 编写高质量代码:Web前端开发修炼之道(一)
最近老大给我们买来一些技术方面的书籍,其实很少搬着一本书好好的完整的看完过,每每看电子档的,也是打游击式的看看这章,瞅瞅那章,在那5本书中挑了一本比较单薄的<编写高质量代码web前端开发修炼之道 ...
- 编写高质量代码改善java程序的151个建议——导航开篇
2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...
随机推荐
- java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)
插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...
- svg学习(七)polygon
<polygon> 标签用来创建含有不少于三个边的图形. <?xml version="1.0" standalone="no"?> & ...
- 12. 星际争霸之php设计模式--模板模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- Android Studio的git功能的使用
初次使用AS自带的git工具的配置 初次使用AS自带的git工具需要设置一些配置,如果你已配置过,可跳过该部分内容. 首先你需要下载git,然后打开AS的git设置,路径如下,选择你安装在你电脑上的g ...
- [2]R语言在数据处理上的禀赋之——可视化技术
本文目录 Java的可视化技术 R的可视化技术 二维做图利器plot的参数配置 *权限机制 *plot独有的参数 *plot的type介绍 *title介绍 *公共参数集合--par *par的权限机 ...
- 爬虫6:多页面增量Java爬虫-sina主页
之前写过很多单页面python爬虫,感觉python还是很好用的,这里用java总结一个多页面的爬虫,迭代爬取种子页面的所有链接的页面,全部保存在tmp路径下. 1 序言 实现这个爬虫需要两个数据结构 ...
- 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
升级时提示 Connection failed. Please check your network connection and try again 修改安装目录下bin\studio.exe.vm ...
- PLSQL Developer 不能连接 oracle 12c 64位 的解决办法 for win 64
1.安装Oracle 12c 64位 2.安装32位的Oracle客户端( instantclient-basic-nt-12.1.0.1.0) 1) 下载instantclient-basic-nt ...
- java 字符串类型String
在本质上,字符串实际上一个char类型的数组,由java.lang.String类来表示,该类具有一系列的属性和方法,提供对字符串的一些操作.除此之外,java还提供了StringBuffer类来处理 ...
- androidBroadCast总结
BoradCast广播1.接受广播 BroadCastReceiver(接收系统的广播) 1-1:电话的广播 1-1-1:拨打电话的广播 1.创建一个类,继承BoradcastReceiver 2.重 ...