es5的总结

ES5:

JSON.parse(str [, fn])方法:
        作用: 将字符串转换成一个js对象
      参数:  @str  需要转换为对象的字符串
                  @fn(key, value)  返回的是处理结果
      返回值:  obj
JSON.stringify(obj [, fn])方法:
        作用:   将js对象转换成一个字符串
        参数: @obj 需要转换的对象
                    @fn(key, value) 返回的是处理结果
        返回值:  str

数组拓展方法:

Array.isArray(obj)方法:
        作用:   判断是否是数组
        参数: @obj 判断的对象
        返回值:  boolean        
arr.fill(data)方法:
        作用: 把数组的每个位置都变成data
        参数: @data 传递的数据, 诺为函数,不会执行
         返回值:    arr
arr.indexOf(item) 方法:  从前往后
arr.lastIndexOf(item) 方法:  从后往前
        作用:   得到数组成员的索引值,如果不存在返回-1
        参数: @item 查找的元素
         返回值:    int
遍历方法:
arr.forEach(fn(value, index, arr)) 方法:
         作用:  遍历数组
        参数:   回调函数
        返回值:   undefined
arr.map(fn(value, index, arr)) 方法:
         作用:  映射数组,  得到新数组
        参数:   回调函数, 得到的新arr是回调函数的返回值
        返回值:  新arr
arr.filter(fn(value, index, arr)) 方法:
         作用:   筛选数组; 遍历数组,  将数组中符合条件的成员保存为新数组
        参数:   回调函数,  返回值布尔值, 表示筛选条件
        返回值:   新arr
断言方法:
arr.some(fn(value, index, arr)) 方法:
        作用:     判断数组成员,  是否满足至少一个条件
        参数:   回调函数, 返回值是判断条件
        返回值:  boolean
arr.every(fn(value, index, arr)) 方法:
         作用:   判断数组成员,  是否满足全部条件
        参数:   回调函数, 返回值是判断条件
        返回值:  boolean
累积方法:
arr.reduce(fn(oldValue, value, index, arr)) 方法:   从前往后
arr.reduceRight(fn( oldValue, value, index, arr )) 方法:   从后往前
         作用:   对数组执行累积运算,  遍历从第二次开始
        参数:    @oldValue 上一次执行时累积的结果
        返回值:  累积的结果

严格模式:

严格模式的意义:
在以前的模式中,书写的代码有一些问题, 比如: 污染了全局作用域, 代码不够优化等, js无法帮我们捕获这些问题
ES5新增严格模式,可以避免这些问题的产生,   优化代码, 提高代码执行效率
使用严格模式:
    只需要在作用域开头插入一行字符串 "use strict", 支持严格模式的浏览器会自动切换到严格模式
严格模式下的限制:
严格模式下,  定义变量没有使用var会报错
严格模式下, 定义相同的参数名称会报错
严格模式下,   不允许定义相同属性名称
严格模式下,   不允许使用关键字、保留字、特殊变量作为变量名称。

严格模式下,  用delete删除变量, 会报错
            正常模式下, 用delete删除变量, 方法失效, 但不会报错
严格模式下, 不允许使用8进制和特殊字符(比如换行符等)
         正常模式下可以使用
严格模式下,  使用eval, 不会污染全局作用域, 如果想污染可以把eval保存在变量中使用
            正常模式下, 可以使用, 并且会在全局作用域下创建变量
arguments.callee:   解决函数功能与函数名称耦合的问题
严格模式下,   不允许使用arguments.callee
with(context)语句:   进入某个作用域中, 方便调用该作用域的方法
严格模式下,   不允许使用with语句

局部严格模式: 

在函数体内使用严格模式是局部的严格模式, 此时函数体内将转化一个严格模式,函数体外部是正常模式
局部严格模式对作用域的改变:

        正常模式下函数内部作用域是全局作用域

          局部严格模式下函数内部作用域是undefined    

ES5新增方法:

Date对象: date.toJSON()方法:   //date值的是Date的实例化对象

        作用:   把日期对象转化成一个可读性强的日期格式

        返回值:  str

bind(fn, context, params...)方法:

        作用:  为函数绑定作用域, 但不执行.   call和apply函数定义作用域的时候, 会立即执行;   
        参数: @fn执行的函数,  @context绑定的作用域, @params...传入的参数

create(obj)方法:

        作用: 实现继承参数对象;  实现原理是寄生式继承 (寄生工厂方法)
        参数: @obj 被继承的对象
        返回值: 新obj, 新对象的prototype为@obj 

ES5特性:

Object.defineProperty(obj,  property,  config)方法:
        作用:   设置对象属性的特性
        参数:  @obj              设置的对象
                    @property    该对象需要设置特性的属性
                    @config         配置对象, 为@property设置特性
                            value                    定义属性值
                            writable              属性是否可以被更改
                            enumerable       属性是否可以被枚举(for in 循环)
                            configurable      属性特性是否可以被再次修改
                            set: fn(value)     当对象属性赋值时,触发这个方法
                                    作用域:  @obj
                                    参数:        该属性赋值的值
                                     在set方法中不能修改该属性,  否则无限循环
                            get: fn()            当对象属性获取的时候,会触发这个方法
                                作用域: @obj
                                参数: 无
                                在get方法中不能获取这个属性, 否则会无限循环
        默认:     如果没有定义特性, 默认即可以被修改也可以被枚举.
                      如果定义了特性,  默认即不能被修改, 也不能被枚举
Object.defineProperties(obj,  configObj)方法:
        作用:   设置对象的多个属性的特性
        参数: @obj                    设置的对象
                    @configObj       配置对象
                            属性名为需要设置特性的属性
                            属性值为配置(等于上面的@config参数)
Object.getOwnPropertyNames(obj)方法:
        作用:   获取属性名称
        参数: @obj获取属性名称的对象
        返回值: 所有属性名称构成的数组
        注意:   只能获取对象上的直接属性名称,  不能获取原型上的
Object.getOwnPropertyDescriptor(obj, property) 方法:
        作用:   获取属性特性对象
        参数: @obj              操作的对象
                    @property    @obj的属性
        返回值:  @property的特性对象
        注意:   如果属性存在,没有定义特性, 默认值是true. 
                    如果属性存在, 定义特性的时候,没定义的特性, 默认是false
                    如果属性不存在,被看作false
Object.seal(obj)方法:
        作用:   封闭对象, 使其不能添加或删除属性
        参数: @obj       需要被封闭的对象
        注意:   封闭是单项的, 无法被解除
Object.isSealed(obj) 方法:  判断参数对象是否被封闭
Object. freeze(obj)方法:  冻结参数对象, 使其不能添加、删除和修改(单向的,无法被解除)
Object.isFrozen(obj)方法:  判断参数对象是否被冻结
objAny.prototype.isPrototypeOf(obj)方法:  参数对象的原型是否是调用方法的这个原型

Object.getPrototypeOf(obj)方法:    获取对象原型

你可能感兴趣的:(javascript)