预览模式: 普通 | 列表

Javascript中对象类型自动化转换

         今天搞Location时已经想到了这个,typeof document.location时说的是'object',为什么alert的时候不是'object'呢?这个就跟js中的Object对象的类型转换有关了~~~

          js作为一个弱类型语言,很多操作会将类型自动转换,譬如说'23' + 1会自动将'23'转化为整形,那么在对对象进行操作时是怎么转化的呢?

           答案:在字符串环境将会调用对象的toString方法,在数字环境将会调用对象的valueOf方法,如果对象本身没有定义toString方法,那么 将用Object的,如果对象本身没有定义valueOf方法,那么就会先尝试调用它自身的toString方法再进行类型转换。        

JavaScript代码
  1. var objA  = {  
  2.     a:123,  
  3.     toString:function(){return 1},  
  4.     valueOf:function(){return 12}  
  5. }  
  6.   
  7. var objB = {  
  8.     a:12,  
  9.     toString:function(){return 1},  
  10.     valueOf:function(){return 2}  
  11. }  
  12.   
  13. alert(String(objA) == String(objB)) //true 串,调用toString  
  14. alert(objA + 1 == objB + 1);//false 数字,调用valueOf  
  15. alert(objA > objB)// true 数字,调用valueOf  

         有没有想到些什么?我想的是==运算符会不会也是先调对象的valueOf然后进行比较,那么我们能不能两个长得完全不一样,却相等的对象?

JavaScript代码
  1. var objA  = {  
  2.     jj:123,  
  3.     toString:function(){return 1},  
  4.     valueOf:function(){return 2}  
  5. }  
  6.   
  7. var objB = {  
  8.     mjj:12,  
  9.     toString:function(){return 1},  
  10.     valueOf:function(){return 2}  
  11. }  
  12.   
  13. alert(objA == objB)//false  

   

 

查看更多...

Tags: javascript object 类型转换

分类:HTML | JS | CSS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 33

关于window.location和document.location

一直以来都有这样一个观点,window.location与document.location并不相同,前者是一个Location对象,而后者只是一个只读字符串,Javascript权威指南14.2.2一直是这么说的。

前段时间遇到一个Bug,排查过程中,发现与location对象的读取有关,一些代码中使用了window.location.href,而另一些代码中使用了document.location.href,并没有导致错误,我也一直以为document.location只是一个字串,这是怎么回事呢?

验证一下就知道了,直接把下面的放到浏览器的地址栏里去:
 

JavaScript代码
  1. javascript:alert(window.location === document.location);  

经过测试,没有发现哪个浏览器返回false!!! 震惊,也就是document.location和windo.location引用的是同一个对象,一模一样的~~~

古人云:尽信书则无书

Tags: javascript window.location document.location

分类:HTML | JS | CSS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 28

[私密日志]私密日志

该日志是私密日志,只有管理员或发布者可以查看!
分类:生活 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 42

年会

        开完年会回来了,心情很不好

        如果开2010年年会的时候我还在,希望能见证一些改变,并且这些改变里有我的努力

        不要抱怨,要尝试去改变,不要相信不可能,也许只是没有去做

查看更多...

Tags: 感触

分类:生活 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 91

用CSS3实现的JS特效

 虽然早就知道了,但是在我还没有用JS实现这些特效前,看到了用几行css就实现了,感觉还是很不爽

链接在这里 ,仅支持webKit核心的浏览器,比如chrome, safari 

Tags: javascript effect motion css3

分类:HTML | JS | CSS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 107