写一个创建命名空间的函数nameSpace_360的一道面试题

作者:日期:2014-03-24 19:55:07 点击:149

 写一个创建命名空间的函数namespace,参数str是一个以.为分隔的字符串,函数定义后可以以如下的方式使用:
namespace("com.so.image");
com.so.image.Slider={};
在JS里,所谓的命名空间就是指用JS对象表示法的方法来定义一些属性或方法,就是把一些东西定义成对象的属性。也就是单例模式。在我们课程里的应用,比如说DOM库。 com.so.image就是image是个对象,它还是so的属性,so是com的属性(当然也是对象类型),就是创建了一个三级的对象类型的属性,用来细化一些定义。
答案如下:

function namespace(str){
	var a=str.split('.')
	var obj=null;
	for(var i=0;i

更完整的测试用例,即TOOL是已经存在的对象,并且TOOL下还有第二级对象TOOL.DOM,并且已经在TOOL这个对象上创建了一个fn属性是个方法。
在TOOL.DOM下面也创建了一个fn属性。
现在是再在TOOL.DOM下面创建ABCD和ABCD下面的BBC这个属性()

var str="TOOL.DOM.ABCD.BBC";
var TOOL={}
TOOL.DOM={};
TOOL.fn=function(){alert("TOOL");}
TOOL.DOM.fn=function(){alert("DOM")}
var str="TOOL.DOM.ABCD.BBC";
var TOOL={}
TOOL.DOM={};
TOOL.fn=function(){alert("TOOL");}
TOOL.DOM.fn=function(){alert("DOM")}

上一篇: javascript中this关键字的解释及视频

下一篇: 前端面试题:数组去重(字符去重)