标签:属性 实例 对象 理解 原型 prototype 构造函数
对构造函数的理解
创建对象的方式:
1.对象字面量
2.new Object()
3.自定义构造函数
ES6以前没有类的概念,使用构造函数创建对象
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new一起使用。我们可以把对象中公共的属性和方法抽取出来,然后封装到这个函数里面
注意:
1.构造函数用于创建某一类对象,其首字母要大写
2.构造函数要和new一起使用才有意义
new执行时做的四件事:
1.在内存中创建一个新的空对象
2.让this指向这个新的对象
3.执行构造函数里面的代码,给这个新对象添加属性和方法
4.返回这个新对象(所以构造函数里不需要return)
实例成员,通过实例访问
静态成员,通过构造函数访问
对原型的理解,(用原型实现继承,手写)
原型是构造函数里的一个属性,属性名为prototype,这个prototype是一个对象
通过构造函数实例化得到的对象,对象身上系统自动加了一个
__proto__
属性,这个属性指向构造函数的原型对象,也就是prototype属性
调用方法时,先看对象自己有没有这个方法,没有的话就去原型上找
prototype上又有一个constructor属性,指回构造函数本身
constructor主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数。
如果我们用对象给构造函数的prototype赋值,则必须手动写上constructor指向原来的构造函数
构造函数方法很好用,但是存在浪费内存的问题
构造函数通过原型分配的函数是所有对象所共享的
js规定,每一个构造函数都有一个prototype属性,指向另一个对象。注意prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有
我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法
通过一个对象的_proto_可以找到它的原型对象,原型对象也是一个对象,可以通过原型对象的_proto_,最后找到Object.prototype。这个从实例的原型对象开始一直到Object.prototype就是原型链。
l 原型链继承
核心:将父类的实例作为子类的原型
优点:
-
非常纯粹的继承关系,实例是子类的实例,也是父类的实例
-
父类新增原型方法/原型属性,子类都能访问到
-
简单,易于实现
缺点:
- 要想为子类新增属性和方法,必须在new Father()这样的语句之后执行,不能放到构造器中
- 无法实现多继承
- 来自原型对象的所偶遇属性被实例共享
- 创建子类实例时,无法向父类构造器传参
原型链顶端是什么
null
标签:属性,实例,对象,理解,原型,prototype,构造函数 来源: https://www.cnblogs.com/ooreoo/p/14881397.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。