又见js变态的写法,看得我脑子痛 同情楼主,google一下相关资料Javascript 有两个种定义Function的方法。例如 function a(){alert("a")} var a = function(){alert("a")} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 test1 是一个对象 它包含一个pintof方法.而initTest是用来初始化这个对象.因为这样写便于使用和维护. 你对JS的函数/变量等常用的概念了解后还要注意其面向对象的概念;因为javascript里并不十分明确清晰的区分方法/属性/构造/析构...,也就是说它把这些概念都混杂在了一起,所以阅读起来要费些脑细胞了,呵呵;看看这里不知道对你有没有帮助http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=zh 这个有点变态 估计是故意这样写的printof是test1的一个属性,只是这个属性是个函数,但这函数就返回了一个变量写的太麻烦了 可以简单的 to mingxuan3000 :我是改了函数体的,只是把他这个结构弄过来问的要是我直接复制他那个函数来问的话估计会超出帖子字数限制^_^ <script type="text/javascript"><!--var myDog = { "name": "Spot", "bark": function(param) { alert("Woof!"+param); }, "displayFullName": function() { alert(this.name + " The Alpha Dog"); }, "chaseMrPostman": function() { // implementation beyond the scope of this article } };myDog.bark('haha');//--></script>myDog就是test1它拥有name属性和bark,chaseMrPostman,displayFullName三个方法.这里的bark就是你的printof.这是创建方法的另一种方式.当然可以附带参数."bark” : function(param) { alert(“Woof!”+param); }, 太好了SysTem128 :请问你这个是你写的么?太好了啊!你有没有相关的资料啊?能给我一份么?谢谢 http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=zh 里的一段改了下-_-!源例没有带参数的方法. //和以下一样function initTest(){ test1 = { printof : function (){ return 'bbbb'; } } }//或者function initTest(){ test1 = new Object();test1.printof = function (){ return 'bbbb'; } } function initTest(){ //@1 test1 = (function(){ //@2 return { printof : function(){ //@3 return 'bbbb'; } //@3 end } })(); //@2 end } //@1 endinitTest(); alert(test1.printof()); 这样排版看这顺眼了吧?从头到尾说一下吧,initTest,这个不用说了,是最常规的写法。@1定义个initTest函数再来看@2,js里有个立即执行符号"()"[学名忘记怎么说了,反正意思就是立马执行]。他的用法是:(function(v){v();})(function(){alert('v')});//这样写的话,就表示立即执行这个函数,结果"弹出v".@2 定义一个test1函数,并且初始化。@3 这里又是一种函数的定义方法(如果理解成对象更好),但这种定义方法必须包含在{}内,例如:var v = { _init : function() { alert('function init!'); }, _str : 'string _str'};//这里定义了一个对象v,里面包含一个_init函数和一个_str字符串。//可以通过这样调用。例如,alert(v._str); 弹出"string _str";下面两句就很好理解了,initTest(); 执行initTest()函数,由于里面有个立即执行函数,所以就会在产生一个名为text1函数(对象)。alert(test1.printof()); 弹出text1内的printof函数,这个printof返回一个字符串"bbbb",所以结果当然是,弹出bbbb了。回答问题,1:printof是一个啥?printof是test1对象内的一个子项,好拗口啊,你理解就好。绝非switch.2:他们当初为什么要这样写? 这个就不好回答了,必须拿出他的具体应用,就这个例子来说,这样写是为了搞坏一些人的脑袋或者想炫耀技术多么牛。3:从哪里去学这样的写法?不必刻意的学。这样的写法谁会欢迎? function initTest(){ //定义私有变量test1,将执行一匿名函数;test1 = (function(){ return { printof : function (){ return 'bbbb'; } } })(); //返回对象,该对象具有printof属性,printof为函数,该函数返回string 'bbbb'} initTest();//运行initTest函数,将初试test1到window对象alert( test1.printof()); //执行test1的printof函数,将返回'bbbb'不BT啊 //定义私有变量test1,将执行一匿名函数;这里误解了,如果是 var test1 = 就是定义私有变量;这里应该是定义全局变量; 如果一个类直接调用,理论上讲,window就可以看作是这个类的实例,所以这里可以直接访问test1。 谢谢shaguarof3d这么耐心的回复,谢谢 $_SESSION释放问题-在线求支援 smarty 三維數組循環, help php正则表达式函数 动态通过select的option控制div的hide mysql 的 datetime 类型怎么比较大小? 还是mail()问题,换成iMail做邮件服务,我的php.ini该如何设置呢? 高手来解释一下md5()加密的原理,md5()加密的东西是否唯一呢? 我要把id大于30的记录的money字段的和输出到也面,怎么写代码? 请问这句怎样理解? ie8 下部分页面加载初无法获取session值 PHP的开发工具? 还是来到php,使用过SVNManager兄弟请指导下。
因为这样写便于使用和维护.
因为javascript里并不十分明确清晰的区分方法/属性/构造/析构...,也就是说它把这些概念都混杂在了一起,所以阅读起来要费些脑细胞了,呵呵;
看看这里不知道对你有没有帮助http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=zh
写的太麻烦了 可以简单的
我是改了函数体的,只是把他这个结构弄过来问的
要是我直接复制他那个函数来问的话估计会超出帖子字数限制^_^
<!--
var myDog = {
"name": "Spot",
"bark": function(param) { alert("Woof!"+param); },
"displayFullName": function() {
alert(this.name + " The Alpha Dog");
},
"chaseMrPostman": function() {
// implementation beyond the scope of this article
}
};myDog.bark('haha');
//-->
</script>
myDog就是test1它拥有name属性和bark,chaseMrPostman,displayFullName三个方法.
这里的bark就是你的printof.这是创建方法的另一种方式.当然可以附带参数.
"bark” : function(param) { alert(“Woof!”+param); },
SysTem128 :
请问你这个是你写的么?太好了啊!
你有没有相关的资料啊?能给我一份么?谢谢
里的一段改了下-_-!
源例没有带参数的方法.
function initTest(){
test1 = {
printof : function (){
return 'bbbb';
}
}
}//或者
function initTest(){
test1 = new Object();
test1.printof = function (){
return 'bbbb';
}
}
function initTest(){ //@1
test1 = (function(){ //@2
return {
printof : function(){ //@3
return 'bbbb';
} //@3 end
}
})(); //@2 end
} //@1 endinitTest();
alert(test1.printof());
这样排版看这顺眼了吧?
从头到尾说一下吧,
initTest,这个不用说了,是最常规的写法。@1定义个initTest函数再来看@2,js里有个立即执行符号"()"[学名忘记怎么说了,反正意思就是立马执行]。他的用法是:(function(v){
v();
})(function(){
alert('v')
});
//这样写的话,就表示立即执行这个函数,结果"弹出v".
@2 定义一个test1函数,并且初始化。@3 这里又是一种函数的定义方法(如果理解成对象更好),但这种定义方法必须包含在{}内,例如:var v = {
_init : function() {
alert('function init!');
},
_str : 'string _str'
};
//这里定义了一个对象v,里面包含一个_init函数和一个_str字符串。
//可以通过这样调用。例如,alert(v._str); 弹出"string _str";
下面两句就很好理解了,
initTest();
执行initTest()函数,由于里面有个立即执行函数,所以就会在产生一个名为text1函数(对象)。
alert(test1.printof());
弹出text1内的printof函数,这个printof返回一个字符串"bbbb",所以结果当然是,弹出bbbb了。回答问题,
1:printof是一个啥?
printof是test1对象内的一个子项,好拗口啊,你理解就好。绝非switch.2:他们当初为什么要这样写?
这个就不好回答了,必须拿出他的具体应用,就这个例子来说,这样写是为了搞坏一些人的脑袋或者想炫耀技术多么牛。3:从哪里去学这样的写法?
不必刻意的学。这样的写法谁会欢迎?
//定义私有变量test1,将执行一匿名函数;
test1 = (function(){
return {
printof : function (){
return 'bbbb';
}
}
})();
//返回对象,该对象具有printof属性,printof为函数,该函数返回string 'bbbb'
} initTest();//运行initTest函数,将初试test1到window对象
alert( test1.printof()); //执行test1的printof函数,将返回'bbbb'不BT啊
这里应该是定义全局变量;