去年一年的时间都是在跟随项目,从后台到前端、从java到javascript、从一无所知到有些思路、从对无知产生恐惧到面对需求可以有那份淡定,但由于对自己的放松,没有及时的进行总结,写自己的博客记录自己一路的收获与失误。希望今年坚持写下去,为自己加油!


人可以胸怀理想,但必须脚踏现实。---go。


项目中多数工作都是重复的复制粘贴修改,但在这个重复枯燥的过程中,引发了自己对自己的思考,真的需要这么做吗?真的只能这么做吗?是不是有更好的方法?是不是可以把重复的提炼出来进行封装?但整个项目都是同一风格,一修改等于重新来过,甲方等不了,项目经理也等不了,得到了我也等不了的错误结论,一次次的没那个勇气去修改,进入一次次的纠结之中。

造成现有的原因我个人觉得以下几点:

1)核心代码非经验丰富者写;

2)自身惰性,一叶障目不想见泰山;

3)实际项目进度严格控制。

发了些牢骚,但也是今年自身需要去克服的困难,

1)没有经验丰富者可以去看开源项目、看淘宝看京东怎么写的;

2)惰性需要渴望来治,渴望有所成就,渴望有所收获,渴望学以致用,实现自我价值;

3)项目开发过程中尽量不改动也完成的功能模块,逐步引入新的思想,新的代码风格,迭代开发,保持项目进度


进入正题js的命名空间:

1.命名空间的由来

在js中没有类、对象这些概念,变量和函数,类的相关机制都是通过原型来实现的;于是在简单项目中直接定义function,当然自身单词量够用。但对于大型项目,多小组协同开发,代码量大,就导致变量名、函数名等各种冲突,错误不易发现及修改和代码难于管理维护。

命名空间 namespace 是解决上述问题的一种有效方式;大型网站如Yahoo都有自己的命名空间。

2.命名空间的作用

1)避免不同js文件中命名冲突;

2)协同开发易于管理;

3)统一代码风格,便于学习、上手、维护。

3.js中的命名空间

// 声明一个全局对象Namespace,用来注册命名空间
Namespace = new Object();

// 全局对象仅仅存在register函数,参数为名称空间全路径,如"Grandsoft.GEA"
Namespace.register = function(fullNS)
{
// 将命名空间切成N部分, 比如Grandsoft、GEA等
var nsArray = fullNS.split('.');
var sEval = "";
var sNS = "";
for (var i = 0; i < nsArray.length; i++)
{
if (i != 0) sNS += ".";
sNS += nsArray[i];
// 依次创建构造命名空间对象(假如不存在的话)的语句
// 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去
sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
}
//通过eval函数转换成可执行的代码,并创建对象
if (sEval != "") eval(sEval);
}



4.项目中如何使用


yui的命名方式

[code]var YAHOO = window.YAHOO || {};


YAHOO.namespace = function(ns) {

if (!ns || !ns.length) {

return null;

}


var levels = ns.split(".");

var nsobj = YAHOO;


// YAHOO is implied, so it is ignored if it is included

for (var i=(levels[0] == "YAHOO") ? 1 : 0; i<levels.length; ++i) {

nsobj[levels[i]] = nsobj[levels[i]] || {};

nsobj = nsobj[levels[i]];

}



return nsobj;

};

[/code]



[url]https://developer.mozilla.org/zh-CN/docs/XUL_School-840092-dup/JavaScript_Object_Management[/url]