leon的后花园


  • 首页

  • 热门

  • 前端

  • 安全

  • 思考

  • 归档

  • 标签

javascript兼容性

发表于 2015-04-16   |   分类于 前端   |  

ecmascipt

  • IE6-8 函数声明和函数表达式

    • ie6-8函数名标识符里面可以有 . , 标准浏览器会报错,如下代码片段一
    • ie6-8函数表达式标识符key被外部访问,标准浏览器只能用于内部访问,如下代码片段二

      //标准报错
      function A(){}
      function A.prototype.b(){}
      var a=new A();
      alert(typeof a.b);

    //ie6-8能取到,标准浏览器不行
    var a=function b(){};
    alert(typeof b);

    解决方法:不要使用带.的函数名标识符,函数表达式标识符不要作为引用的目的出现,出现在标识错误匿名函数等。

  • Firefox对条件语句块内部函数声明处理有差异

    //其它浏览器不管 true或者false,都是2,firefox是1
    //规范定义是函数声明之后出现在全局环境或者函数体里面,在判断块里面当作是在函数里面,所以后面的会覆盖前面的
    function foo(){
    if(true){
      function bar(){alert(1);}
    }
    else{
      function bar(){alert(2);}
    }
    bar();
    foo();
    
  • 各浏览器中 Date 对象的 getYear 方法的返回值不一致
    根据规范,这个方法将返回当前时间的年份值与 1900 的差值,如 1800 年返回 -100,2010 返回 110。但 IE 仅在一个 1900 - 1999 年之间的日期值上调用 getYear 方法时,减去 1900,在其他的日期中返回的是实际的年份,就和 getFullYear 一样。
    解决办法
    使用Date.prototype.getFullYear() 代替

  • ie6-8不支持JSON对象及其方法
  • Chrome Opera 中 for-in 语句遍历出对象属性的顺序与定义的不同,不要依赖key的排序
  • IE6-8不能在 JSON 字符串或对象直接量的最后一个键值对后加 ‘,’
  • IE6不能使用下标来访问字符串
  • 各浏览器中用 for in 可以遍历对象中被更新的内置方法存在差异
  • IE6,IE7,IE8不会忽略数组直接量的末尾空元素
  • 元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
  • Array.prototype.sort当使用了 comparefn 后返回值不为 -1、0、1时,各引擎实现排序结果不一致

##dom

  • IE6 IE7 IE8(Q) 中的 getElementById 方法的参数不区分大小写
  • IE 在创建 DOM 树时会忽略某些空白字符

fe知识储备

发表于 2015-04-16   |   分类于 前端   |  
  • 基础类
    • dom操作
  • 规范类
    • ECMAscript规范
    • w3c规范
  • 浏览器兼容性
    • javascript兼容性
    • css兼容性
    • 移动端兼容性
  • bug/坑的收集
  • 拥抱新趋势
    • ES5常用方法
    • ES6新特性
    • hybrid
    • HTML5 && CSS3
    • react等
  • 前端工程化
    • yomen 等
  • 前端模块化
    • AMD/CMD/UMD
  • 前端模式
    • 设计模式
    • MVC模式
    • MVVM
  • 值得看的源码
    • uglify
    • jquery
  • 后端
    • Python
    • node

javascript混淆器设计

发表于 2015-04-13   |   分类于 前端   |  

做防抓取相关也很久了,js压缩器 如 uglify/YUI compress等很常见,而混淆相关的东西实在是太少,前段时间为了实现动态混淆js,和同事一起实现了一款js混淆器,也是现在市面上最强大的混淆器,正好在知乎看到有人问,就回答了一下:

混淆器实现

ECMASCript规范(ecama-262-5.1)

发表于 2015-04-13   |   分类于 前端   |  

这可能是个天坑系列,规范神马的真是看着让人崩溃。随时有可能放弃。

##4.3.2 primitive value
原始值:原始值包括 Undefined, Null, Boolean, Number, String
表示语言的最底层实现

##4.3.7 object
原生对象包括内置对象和自定义对象
宿主对象指宿主环境(浏览器)实现的对象

阅读全文 »

把书看薄-深入浅出nodejs-异步控制

发表于 2015-04-12   |   分类于 前端   |  

#第4章 异步编程
异步编程对于前端之重要性不言而喻,而 深入浅出node.js书中这一章也写得非常精彩,所以必须得单拿出来做笔记。

异步编程的难点

  • 异常处理,try catch无法获取到异步的代码
  • 函数嵌套过深
  • 阻塞代码
  • 多线程编程

    异步编程解决方案

阅读全文 »
1…3456
leon.lee

leon.lee

不谈兴趣,不谈情怀,计算机就是我的职业,像一个专业的人去思考,去coding

27 日志
3 分类
13 标签
GitHub 知乎
© 2016 leon.lee
由 Hexo 强力驱动
主题 - NexT.Pisces