ES5新特性

一、简介

  • ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准最新修正。 与HTML5规范进程本质类似,ES5通过对现有JavaScript方法添加语句和原生ECMAScript对象做合并实现标准化。ES5还引入了一个语法的严格变种,被称为”严格模式(strict
    mode)”。

二、浏览器支持

Opera 11.60
Internet Explorer 9*
//ie10才支持严格模式 可以用es5shim处理兼容问题
Firefox 4
Safari 5.1**
Chrome 13
兼容ie8: es5-shim
https://www.npmjs.com/package/es5-shim

三、ES5的严格模式 ‘use strict’
给作者提供了选择一个限制性更强语言变种的方式

    1. 消除不安全之处,保证安全运行
    2. 提升编译效率
    3. 未来发展趋势

  规则:
    1)变量先定义在使用
    2)不允许变量重名
      var a=1;
      function a(){}
    3)不允许使用eval
    4)不允许delete
    4)不允许with语句
      var sMessage = "hello";
      with(sMessage) {alert(toUpperCase());}

四、JSON

JSON.parse、JSON.stringify

五、添加对象
新增方法

// 添加或更改对象属性
Object.defineProperty(object, property, descriptor)
// 添加或更改多个对象属性
Object.defineProperties(object, descriptors)
// 访问属性
Object.getOwnPropertyDescriptor(object, property)
// 以数组返回所有属性
Object.getOwnPropertyNames(object)
// 以数组返回所有可枚举的属性
Object.keys(object)
// 访问原型
Object.getPrototypeOf(object)
// 阻止向对象添加属性
Object.preventExtensions(object)
// 如果可将属性添加到对象,则返回 true
Object.isExtensible(object)
// 防止更改对象属性(而不是值)
Object.seal(object)
// 如果对象被密封,则返回 true
Object.isSealed(object)
// 防止对对象进行任何更改
Object.freeze(object)
// 如果对象被冻结,则返回 true
Object.isFrozen(object)

六、额外的数组
新增方法

Array.prototype.indexOf

//跟字符串查找一样,查找指定元素是否存在,如果存在,返回下标,如果不存在返回-1
let arr = [1,2,3,4];
console.log(arr.indexOf(3));	// 2

Array.prototype.every

示例:
let arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"yang", age:38, like:"eat"}
]

let result = arr.every(function(value, index, arr){
	return value.name == "yang";
});
console.log(result)		// ture

Array.prototype.some

some 查找数组中是否有满足条件的元素 
 var arr = [10304];
 var flag = arr.some(function(value,index,array) {
     //参数一是:数组元素
     //参数二是:数组元素的索引
     //参数三是:当前的数组
     return value < 3;
  });
console.log(flag);//返回值是布尔值,只要查找到满足条件的一个元素就立马终止循环

Array.prototype.forEach

 arr.forEach(function(value, index, array) {
       //参数一是:数组元素
       //参数二是:数组元素的索引
       //参数三是:当前的数组
 })
  //相当于数组遍历的 for循环 没有返回值

Array.prototype.map

//map()方法返回一个被操作后的新数组,不会改变原数组
//map()一般配合return使用,如果没有return那跟forEach一样;
示例:
var  arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"wang", age:28, like:"sleep"},
	{name:"ling", age:38, like:"eat"}
]
var  newArr = arr.map(function(value, index, arr){
	var  json = {};
	json.n = value.name;
	json.a = value.age;
	json.l = value.like;
	return json;
})
console.log(newArr);
//
/* 输出:
[
	{n: "yang", a: 18, l: "sport"}
	{n: "wang", a: 28, l: "sleep"}
	{n: "ling", a: 38, l: "eat"}
]
*/

Array.prototype.filter

  var arr = [126648837];
  var newArr = arr.filter(function(value, index,array) { 
  	 //参数一是:数组元素
     //参数二是:数组元素的索引
     //参数三是:当前的数组
     return value >= 20;
  });
  console.log(newArr);//[66,88] //返回值是一个新数组

七、Function.prototype.bind

bind会返回一个函数,不会立即执行 call 立即执行 (window,1,2,3) apply 立即执行 (window,[1,2,3])

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值