呃。。。JS接触不是太多,以下是看到代码的一些疑问,望解答。·-·~
var Application=function(a){a=a||{};
if(!(a.id&&a.width&&a.height)){return}
--> 1.a=a||{};是什么意思。。?
--> 2.参数a是页面的一个要素,a.id&&a.width&&a.height 并且符号在这里代表什么?难道是判断它们不为空么,这有什么好并且的~。?
var _specificMenu=[]; --定义
var a=_specificMenu[name1]; --调用
specificMenu.name1=[...] --添加数据
-->1.JS里面添加数据不需要放前面是吗?可以调用在前,实际添加在后?
-->2.JS里面的[]相当于Hastable是吗?比如说,我用
for(c in specificMenu)
{
//这个时候要用specificMenu[c],这才是值,是吗?
}
------解决方案--------------------
a=a||{}; --如果参数a为空或未定义,那么给a赋值一个空的对象 {}
,a.id&&a.width&&a.height a表示一个对象 id width等是a的属性 这句话是判断a对象的属性是否存在
[] 数组的简写 表示一个空数组
如果未赋值 调用时返回一个空值
------解决方案--------------------
- JScript code
var Application=function(a){ a=a||{}; //"||"是或逻辑,其意思是当左边的为false时(“||”会自动转为boolean判断),用右边的表达式 /* 相当于 if(a){ a={}; }else{ a=a; }*/ if(!(a.id&&a.width&&a.height)){return}//判断DOM对象是否存在,如果不存在就直接返回 var _specificMenu=[];//声明一个数组 var a=_specificMenu[name1]; //将对应name1的值赋给a对象,因为数组中并没有name1的值,所以返回空 _specificMenu.name1=[...] ;//为name1进行数组嵌套赋值 }
------解决方案--------------------
对于函数的参数 可以通过内置方法获取参数个数 arguments.length; arguments[0]第一个参数值
函数可以定义多个参数,调用的时候可以只写一部分 按照顺序匹配 为定义的则为空
new Element({a:b,b:a,y:g}) 实例化一个对象
{a:b,b:a,y:g} 是这个构造函数的参数 {……}定义一个对象
a:b a表示属性名 b表示属性对应的值
比如var o = {a:b,b:a,y:g} ; 那么o.a就等于b
------解决方案--------------------
- HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <script type="text/javascript"> //1.因为看到有的方法的定义及数组数据的添加都放在最后面,但在前面就开始调用了,这样算什么?不要紧么? /* 在回答这个问题前,LZ应该知道JS中的“词法作用域”的问题。 如果不知道,我简单的讲解一下,不过深的研究还是要自己的去搜索。 司法作用域, 在函数被执行前,JS内核已经用一个链表确定了这个函数的执行过程中被声明的变量,函数等,并且所有变量都未被初始化。 展示一下链表内容,在fn中有arr数组,及一个函数对象say。 */ function fn(){ say(); //hello world 因为say在执行已经被知道,所以可以执行,. document.write(arr[0]); //空指针异常, arr在执行已经被知道,但是没有被初始化,arr[0]指向一个null会被报错 var arr=[1,2,3,4]; function say(){ document.write("helloworld"); } } //fn(); /*2.function addMenu(参数1,参数2,参数3,参数4) //定义了4个参数 {...} 看到有的方法定义了4个参数,但是在有时调用的时候他却只给3个参数,可以这样的吖 */ /* 这个问题要的核心在于arguments这个类数组,让我们来看看function addMenu(参数1,参数2,参数3,参数4) JS怎么样解释 arguments=[参数1,参数2,参数3,参数4]; 如果其中一些没有被传入,那么也就是这样arguemnts=[参数1,参数2]; 看看下面一个例子,希望你能懂。 */ function fn2(arg1,arg2,arg3,arg4){ document.write("-------this is fn2 method!!-----<br/>"); document.write("arg1:"+arguments[0]+"<br/>"); document.write("arg2:"+arguments[1]+"<br/>"); document.write("arg3:"+arguments[2]+"<br/>"); document.write("arg4:"+arguments[3]+"<br/>"); } fn2(1,2,3,4); fn2(1,2); function fn3(){ document.write("-------this is fn3 method!!-----<br/>"); document.write("arg1:"+arguments[0]+"<br/>"); document.write("arg2:"+arguments[1]+"<br/>"); document.write("arg3:"+arguments[2]+"<br/>"); document.write("arg4:"+arguments[3]+"<br/>"); } fn3(1,2,3,4); fn3(1,2); //3.new Element({a:b,b:a,y:g})-->有看到这样的代码,在这里 冒号(:)代表什么意思?(Element是自定义的要素,不用管·) /* 这种属于Json格式,“:”表达的其实就是hashtable里的键值对,也就是说 var a=b; var b=a; var y=g; 看下面的例子 */ //建立一个People对象 var People={ name:"hello", sex:"gril" } var p=People;//实例People对象 document.write(p.name+" is a "+p.sex); </script> <body> </body> </html>