作者:狐狸家的鱼
本文链接:面向对象编程
GitHub:sueRimn
具有灵活、代码可复用、高度模块化等特点,易维护和开发
JavaScript使用构造函数作为对象的模板,描述实例对象的基本结构
定义
特点
new
命令基本用法
new命令的作用就是执行构造函数,返回一个实例对象
根据需要,构造函数也可以接受参数 原理
使用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
对象所在的构造函数,可以被所有实例对象继承
原文:https://www.cnblogs.com/suRimn/p/10560702.html