论坛首页 Web前端技术论坛

YUI源码阅读心得 YAHOO.js 小技巧

浏览 3732 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-26   最后修改:2010-10-27
YUI

 阅读YUI2.8.1 版本上
 1,将变量转换为字符串的办法。
  var a=" "+a;  js提供了一系列的自动转换变量类型的方法。

 


  2,if(a==null){
     a={};
   }这样的代码可以简化为 a=a||{};
 
   var s;
   if(a!==null){
     s=a.property;
   }这样的代码可以简化为 s=a&&a.property;

 

 


  3,环境检测代码
    ie;opear;Gecko(firefox);webkit(Safari);mobile;air;caja;secure(ssl);os(操作系统也检测。。。);   
   secure的查询只是检测window.localtion.href有无https状况。   
   大部分检测代码从navigator.userAgent里面出来,通过字符串来进行判断


  4,YUI的继承使用的是prototype的方法继承。
   进行覆盖方法的时候,要注意valueOf和toString 这两个方法。
  因为动态属性的优先级是高于原型优先级的。所以进行继承覆盖方法的时候,需要检测这两个方法。
  
 调用了valueOf跟toString,二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。

 

 

 

   发表时间:2010-10-26  
第2点,不太明白。。。除非主动在循环中给i赋值,否则i的值怎么会变动呢?
自动变换类型也只是在其它表达式中运行的时候做,对原本的值没任何影响
0 请登录后投票
   发表时间:2010-10-27  
clue 写道
第2点,不太明白。。。除非主动在循环中给i赋值,否则i的值怎么会变动呢?
自动变换类型也只是在其它表达式中运行的时候做,对原本的值没任何影响

如果在for循环中 对i值进行了操作,改变为了字符串类型。那i++这样的方式会报错或计算错误吧。
使用i=i+1是保证在循环中i的值能保持为数值类型。
0 请登录后投票
   发表时间:2010-10-27  
every_best 写道
clue 写道
第2点,不太明白。。。除非主动在循环中给i赋值,否则i的值怎么会变动呢?
自动变换类型也只是在其它表达式中运行的时候做,对原本的值没任何影响

如果在for循环中 对i值进行了操作,改变为了字符串类型。那i++这样的方式会报错或计算错误吧。
使用i=i+1是保证在循环中i的值能保持为数值类型。

如果被改变了,那证明程序写得有问题。
另外,如果i不是数字,i++运算会先将它转为数字再进行运算,值可能为NaN,不会出错(IE和FF下测试过)
相反,如果i为字符串,i=i+1会形成"*1"这样的字符串(字符串连接)
0 请登录后投票
   发表时间:2010-10-27  
clue 写道
every_best 写道
clue 写道
第2点,不太明白。。。除非主动在循环中给i赋值,否则i的值怎么会变动呢?
自动变换类型也只是在其它表达式中运行的时候做,对原本的值没任何影响

如果在for循环中 对i值进行了操作,改变为了字符串类型。那i++这样的方式会报错或计算错误吧。
使用i=i+1是保证在循环中i的值能保持为数值类型。

如果被改变了,那证明程序写得有问题。
另外,如果i不是数字,i++运算会先将它转为数字再进行运算,值可能为NaN,不会出错(IE和FF下测试过)
相反,如果i为字符串,i=i+1会形成"*1"这样的字符串(字符串连接)

  是我理解错误了,不严谨了。修正,修正。多谢~
 
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics