7.构造函数的返回值、 工厂模式、 观察者模式、 单例模式
作者:
何必处处示弱 | 来源:发表于
2017-03-24 21:31 被阅读0次
ES5数组新增的3个方法
1、forEach
- 作用:帮我们遍历数组,每遍历到一个值,就会调用一次回调,把这个值与它的下标传递过去
- 语法:数组.forEach(function(v, i){ console.log('使用forEach帮我们遍历好的值与下标') })
- 返回值:undefined
2、 map
- 作用:可以用来代替forEach,但是map可以接收回调的返回值,最终通过一组数据映射为回调返回的另外一组数据
- 语法:var mapArr = 数组.map(function(v, i){ return v * v })
- 返回值:回调所有的返回值组成的新数组
3、 filter
- 作用:可以用来代替forEach,但是还可以过滤数组中的值
- 语法:var filterArr = 数组.filter(function(v, i){ if(v % 2 ==0){ return true; } })
- 返回值:所有返回回调返回true的对应值组成的新数组
call&apply的补充
- 如果不传参 ==> this指向window
- 传null ==> this指向window
- 传undefined ==> this指向window
- 传123 ==> this指向123的包装类型对象(Number对象)
- 传'abc' ==> this指向'abc'的包装类型对象(String对象)
- 传true ==> this指向true的包装类型对象(Boolean对象)
- 传对象 ==> this指向传入的对象
构造函数的返回值
- 如果构造函数没有return语句,那么new它,得到一个新实例
- 如果构造函数return了一些基本类型数据,那么new它,得到一个新实例
- 如果构造函数return了一个对象,那么new它,得到return的对象
严格模式
- ES5新增的一个特性,使用该特性可以让js以一种新的模式运行js脚本。
- 该模式下可以强制我们抛弃那些不推荐不友好的写法
- 该模式下可以让js之前的一些设计不太合理的api表现的合理一些
- 该模式下可以让js拥有一些新的特性,比如ES6/ES7规范中定义的某些语法,必须在严格模式下才有效
严格模式的分类
- 全局模式
- 在全局代码的最上面书写一句话'use strict';
- 使用该模式,所有的代码都按照严格模式执行
- 局部模式
- 在函数内部的最上面书写一句话'use strict';
- 使用该模式,只有该函数内的代码才会按照严格模式执行
需要记住的几条严格模式规则
- 定义变量必须使用var
- 函数调用模式this为undefined
- 真正实现了call谁this就为谁
- eval拥有了单独的作用域
沙箱模式
- 使用某种方式,防止一些代码对外界环境造成潜在影响,这类代码就可以认为是沙箱模式
- 在js中,最简单的沙箱模式写法,就是使用一个自调函数把某块代码进行封装,可以防止全局变量污染
工厂模式
- 凡是调用一个函数,函数返回一个对象,那么这个函数就可以认为是一个工厂。
- 在js中,一般的工厂都是把new对象的过程进行了一个封装。
单例模式
- 只要让某种类型的实例,只能存在一个,实现这种需求的代码就是单例模式
- 在js中,JSON与Math对象就被设计为单例模式,我们不能够创建第二个这种类型的对象。
观察者模式 -- 发布订阅模式
- 只要某事件发生后,会自动执行预设好的回调,那么实现这种需求的代码就是观察者模式
- 观察者模式可以认为就是自定义事件
- 观察者模式通常使用的场景是这样的:某对象做了某件事,其他对象做出相应的一个响应
bind
- ES5提供了一个新的可以改变函数this指向的新函数
- 作用:通过某函数得到一个绑定了固定this的新函数,这个新函数可以是旧函数的clone版本
- 语法:var bindFn = 函数.bind(this)
- 返回值:绑定了this的函数
类成员&实例成员
- 类成员
- 实例成员
- 添加给实例自己的属性与方法
- 原型上供实例使用的属性与方法
本文标题:7.构造函数的返回值、 工厂模式、 观察者模式、 单例模式
本文链接:https://www.haomeiwen.com/subject/gnhqottx.html
网友评论