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