文章分类 其他 原型模式 前端 javascript 开发语言 ecmascript 阅读数 : 43 阅读时长 : 4分钟
目录
原型:JS为每个构造函数提供一个属性prototype(原型),它的值是一个对象,prototype也叫原型对象 原型为了共享公共的成员 prototype
原型链:实例对象在查找属性时,如果查找不到,就会沿着proto去与对象关联的原型上查找,如果还查找不到,就去找原型的原型,直至查到最顶层,这也就是原型链的概念。
对象访问成员的机制
1首先查找自身有没有,有就就近原则使用
2自身没有该成员,通过_proto_找到原型对象,看原型对象上有没有,有就执行
3假如原型对象上也没有,再找原型对象的_proto__,一直找到0bject.prototype
4一直找到Object. prototype,找不到就undefined
1、script 全局环境下 this指向window
2、函数直接调用 this代表window ,函数内部开启严格模式, this 指向 undefined
' use strict' 开启严格模式
3、事件的回调函数中 this------>事件源
4、构造函数的this -------->创建出来的对象(new出来的实例化对象)
5、定时器 this------->window
6、立即执行函数(IIFE) this------>window
7、谁调用函数,this就是谁
相同点: call ,apply,bind都可以改变this指向,让函数执行
接收的第一个参数都是this要指向的对象
都可以利用后续的参数传参
不同点: call和apply对函数都是立即调用的,而bind不会立即调用函数,bind返回的是改变this指向之后的函数 call的参数是用逗号隔开的,apply是接收数组作为参数
概念:闭包 内部函数及其对外部变量的引用捆绑在一起
内部函数访问外部函数的变量
形成条件:闭包 内部函数+外部函数 (提供一个变量)
作用:闭包 延伸变量的作用域,形成独立的作用域
原理:作用域链
缺点:容易造成内存泄漏(内存因某种原因无法释放)
更多【原型模式-js常见问题1】相关视频教程:www.yxfzedu.com