做者:狐狸家的鱼html
本文连接:面向对象编程
gitGitHub:sueRimngithub
具备灵活、代码可复用、高度模块化等特色,易维护和开发编程
JavaScript使用构造函数做为对象的模板,描述实例对象的基本结构数组
定义app
特色模块化
new
命令基本用法函数
new命令的做用就是执行构造函数,返回一个实例对象this
根据须要,构造函数也能够接受参数 原理prototype
使用new命令时,它后面的函数依次执行下面的步骤
prototype
属性this
关键字构造函数内部,this指的是一个新生成的空对象 new.target
若是当前函数是new命令调用,new.target
指向当前函数,不然为undefined
涵义
this
就是属性或方法“当前”所在的对象this
的指向是可变的使用场合
this
指的就是顶层对象window
this
指的是实例对象this
指的就是方法运行时所在的对象使用注意点
this
的值,而后内层函数调用这个变量 var that = this
this
map
和forEach
方法,运行提供一个函数做为参数。这个函数内部不该该使用this
var that = this
this
看成forEach
方法的第二个参数,固定它的运行环境this
绑定this的方法
this
的指向(即函数执行时所在的做用域),而后在所指定的做用域内,调用该函数call
方法的参数,应该是一个对象。若是参数为空、null
、undefined
,则默认传入全局对象call
方法能够接受多个参数。第一个参数就是this
所要指向的那个对象,后面的参数则是函数调用时所需的参数call
的惟一区别就是,它接收一个数组做为函数执行时的参数apply
方法的第一个参数也是this所要指向的那个对象,若是设为null
或undefined
,则等同于指定全局对象call
方法中必须一个个添加,可是在apply
方法中,必须以数组形式添加apply
方法和Math.max
方法undefined
slice
方法,能够将一个相似数组的对象(好比arguments
对象)转为真正的数组this
绑定到某个对象,而后返回一个新函数call
方法使用原型对象
构造函数的缺点是同一个构造函数的多个实例之间,没法共享属性,从而形成对系统资源的浪费。解决方法:使用prototype
prototype
属性的做用就是:JavaScript
继承机制的设计思想就是,原型对象的全部属性和方法,都能被实例对象共享原型对象的做用就是定义全部实例对象共享的属性和方法
原型链
因为原型对象也是对象,因此它也有本身的原型,对象到原型,再到原型的原型……
Object.prototype
的属性Object.prototype
的原型是null
,原型链的尽头就是null
Object.getPrototypeOf
方法返回参数对象的原型constructor属性
prototype
对象有一个constructor
属性,默认指向prototype
对象所在的构造函数,能够被全部实例对象继承