HTML5 CSS3新的WEB标准和浏览器支持

2020-04-21 08:03:39易采站长站整理

JSON.parse( text, translate )
JSON.stringify( obj, translate )
String.prototype.toJSON
Boolean.prototype.toJSON
Number.prototype.toJSON
Date.prototype.toJSON

MDC文档:http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/
MSDN文档:http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx

支持:Firefox 3.5+, IE8+
替代/过渡:json2.js http://www.json.org/json2.js

ECMAScript 5 Array Extras

js1.6里实现的数组方法,主要是forEach, map, fliter这几个函数式编程里非常重要的方法,还有反向查询

Array.prototype.indexOf( str )
Array.prototype.lastIndexOf( str )
Array.prototype.every( fn )
Array.prototype.some( fn )
Array.prototype.filter( fn )
Array.prototype.forEach( fn )
Array.prototype.map( fn )

MDC文档:https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_extras

支持:Firefox2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+
替代/过渡:都可以通过扩展Array.prototype来模拟

ECMAScript 5 isArray()

区分数组和对象

Array.isArray([]); // true

支持:无
替代/过渡:Array.isArray = function(a){ return Object.prototype.toString.call(a) === “[object Array]”;};

ECMAScript 5 Object

用GOOGLE I/O演讲里的话来说:更鲁棒(robust)的对象系统

Object.getPrototypeOf( obj )

约翰同学的讲解:http://ejohn.org/blog/objectgetprototypeof/

支持:Firefox3.5
替代/过渡:object.__proto__ 或 object.constructor.prototype

Object.create( proto, props ) //克隆或继承对象
 
Object.keys( obj ) //数据结构的映射
Object.getOwnPropertyNames( obj )
 
Object.preventExtensions( obj ) //不能添加新属性
Object.isExtensible( obj )
 
Object.seal( obj ) //不能删除和修改属性的配置,不能添加新属性
Object.isSealed( obj )
 
Object.freeze( obj ) //不能删除和修改属性的配置,不能添加新属性,不能写属性
Object.isFrozen( obj )

约翰同学的讲解:http://ejohn.org/blog/ecmascript-5-objects-and-properties/

支持:无
替代/过渡:Object.create和Object.keys可以自己实现

ECMAScript 5 Property Descriptor

对象属性的访问控制

Object.getOwnPropertyDescriptor( obj, prop )
Object.defineProperty( obj, prop, desc )
Object.defineProperties( obj, props ) 
desc = {
     value: true,
     writable: false, //修改
     enumerable: true, //for in
     configurable: true, //删除和修改属性