目录
Object.create(prototype,[descriptors])
Object.defineProperties(object,descriptors)
Array.prototype.indexOf(value)
Array.prototype.LastIndexOf(value)
Array.prototype.forEach(function(item,index){})
Array.prototype.map(function(item,index){})
Array.prototype.filter(function(item,index){})
它是一种由ECMA组织(前身为欧洲计算机制造商协会)指定和发布的脚本语言规范。而JavaScript就是ECMA的实现,但术语ECMAScript和JavaScript平时表达同一个意思。
JS包含三个部分:
- ECMAScript(核心)
- 扩展==>浏览器端
BOM(浏览器对象模型)
DOM(文档对象模型)
- 扩展==>服务器端
Node
ES5
严格模式
理解
除了正常运行模式(混杂模式),ES5添加了第二种运行模式:“严格模式”(strict mode)。顾名思义,这种模式使得JavaScript在更严格的语法条件下运行。
目的/作用
- 消除JavaScript语法的一些不合理、不严谨之处,减少一些怪异行为
- 消除代码运行的一些不安全之处,为代码的安全运行保驾护航
- 为未来新版本的JavaScript做好铺垫
使用
在全局或函数的第一条语句定义为:"use strict"
如果浏览器不支持,只解析为一条简单的语句,没有任何副作用
语法和行为改变
- 必须使用var声明变量
- 禁止自定义的函数中的this指向window
- 创建eval作用域(不会污染全局)
- 对象不能有重名属性
JSON对象
JSON.stringify(obj/arr)
js对象(数组)转换为json对象(数组)
JSON.parse(json)
json对象(数组)转换为js对象(数组)
Object对象方法扩展
ES5给Object扩展了一些静态方法,常用的2个:
Object.create(prototype,[descriptors])
作用:以指定对象为原型创建新的对象
为新的对象指定新的属性,并对属性进行描述
value:指定值
writable:标识当前属性值是否可以修改,默认为false
configurable:标识当前属性是否可以被删除默认为false
enumerable:标识当前属性是否能用for in 枚举,默认为false
Object.defineProperties(object,descriptors)
作用:为指定对象定义扩展多个属性
get:用来获取当前属性值的回调函数
set:修改当前属性值的触发回调函数(当扩展属性发生变化时自动回调),并且实参即为修改后的值
存取器属性:setter,getter一个用来存值,一个用来取值
数组的扩展
Array.prototype.indexOf(value)
得到value在数组中的第一个下标
Array.prototype.LastIndexOf(value)
得到value在数组中最后一个下标
Array.prototype.forEach(function(item,index){})
遍历数组
Array.prototype.map(function(item,index){})
遍历数组返回一个新的数组,返回调用函数之后的值
Array.prototype.filter(function(item,index){})
遍历过滤出一个新的子数组,返回条件为true的值
Function扩展
bind()、call()和apply()区别
这两个都是用来指定函数中的this
参数的传入形式不同:
call()从第二个参数开始,以此传入
apply()第二个参数为数组,传入的参数放在数组里
bind()的特点:绑定完this不会立即调用当前的函数,而是将函数返回。传入参数的方式与call()相同