码迷,mamicode.com
首页 > 其他好文 > 详细

前端基础——常考内容

时间:2019-09-28 01:18:34      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:pos   父类   prototype   其他   col   就是   ring   就会   特殊   

一、.什么是原型,什么是原型链?以及原型对象的constructor属性

 

《JavaScript教程-网道》

https://wangdoc.com/javascript/oop/prototype.html

1.原型

原型对象的所有属性和方法,都能被实例对象共享。也就是说,如果属性和方法定义在原型上,那么所有实例对象就能共享,不仅节省了内存,还体现了实例对象之间的联系。

JavaScript 规定,每个函数都有一个prototype属性,指向一个对象。

对于普通函数来说,该属性基本无用。但是,对于构造函数来说,生成实例的时候,该属性会自动成为实例对象的原型。

原型对象的属性不是实例对象自身的属性。只要修改原型对象,变动就立刻会体现在所有实例对象上。

当实例对象本身没有某个属性或方法的时候,它会到原型对象去寻找该属性或方法。这就是原型对象的特殊之处。

如果实例对象自身就有某个属性或方法,它就不会再去原型对象寻找这个属性或方法。

总结一下,原型对象的作用,就是定义所有实例对象共享的属性和方法。这也是它被称为原型对象的原因,而实例对象可以视作从原型对象衍生出来的子对象。

2.原型链

JavaScript 规定,所有对象都有自己的原型对象(prototype)。一方面,任何一个对象,都可以充当其他对象的原型;另一方面,由于原型对象也是对象,所以它也有自己的原型。因此,就会形成一个“原型链”(prototype chain):对象到原型,再到原型的原型……

如果一层层地上溯,所有对象的原型最终都可以上溯到Object.prototype,即Object构造函数的prototype属性。也就是说,所有对象都继承了Object.prototype的属性。这就是所有对象都有valueOftoString方法的原因,因为这是从Object.prototype继承的。

那么,Object.prototype对象有没有它的原型呢?回答是Object.prototype的原型是nullnull没有任何属性和方法,也没有自己的原型。因此,原型链的尽头就是null

3.原型对象的constructor属性

prototype对象有一个constructor属性,默认指向prototype对象所在的构造函数。constructor属性的作用是,可以得知某个实例对象,到底是哪一个构造函数产生的。

另一方面,有了constructor属性,就可以从一个实例对象新建另一个实例。

constructor属性表示原型对象与构造函数之间的关联关系,如果修改了原型对象,一般会同时修改constructor属性,防止引用的时候出错。

修改原型对象时,一般要同时修改constructor属性的指向。

 

二、继承

 

构造函数的继承

让一个构造函数继承另一个构造函数,是非常常见的需求。这可以分成两步实现。

第一步是在子类的构造函数中,调用父类的构造函数。

第二步,是让子类的原型指向父类的原型,这样子类就可以继承父类原型。

 

招银电面前端


链接:https://www.nowcoder.com/discuss/287857?type=all&order=time&pos=&page=0

1.自我介绍

2.说下自己的项目

3.vue的双向数据绑定

4.深浅拷贝

5.事件委托冒泡

6.闭包

7.继承

8.原型链

9.设计模式

10.cookie、session、localStorage、sessionStorage之不同

前端基础——常考内容

标签:pos   父类   prototype   其他   col   就是   ring   就会   特殊   

原文地址:https://www.cnblogs.com/songsongblue/p/11601091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!