原型对象与继承(原型链)
2017-10-17 21:58
190 查看
最近秋招有点压抑,在技术面的时候面试官问了很多我还不太懂的东西。不是说完全不懂,就是实现原理还是很不行。就原型对象和继承(原型链)来说,我大概知道是什么回事,但是要我真的详细讲到底是什么就讲不出来了。所以有重新学了一遍这两个知识点。我看了js高阶有关这部分内容,仿佛我以前对这两个真的是完全不懂。现在写一下我这几天理解的吧。
首先对象的构造可以用字面量的方法,但是这种方法有个缺点就是无法复用,就是如果多个对象用到了相同的属性,那么用字面量的方法就会很麻烦,每次都要写。所以就有了使用构造器的方法构造对象。在ECMScript中的构造器有Object、Array、Function、Date、String这五个。构造器方法只要用new就可以创建新的对象。同样,也可以自定义构造函数,构造函数与普通函数无分别,为了有标志性,构造函数的函数名开头用大写。
构造函数有一个属性prototype,这个属性本身就是一个对象,也就是构造函数的原型对象,这个原型对象有个constructor属性,指向构造函数本身。同样对于构造函数,只要用new就可以实例化一个对象,这个实例化对象自带一个指针_proto_指向了其构造函数的原型对象,故这个实例化对象可以使用原型对象上的属性。基本上就是这样子吧。一般的构造对象的模式是构造函数模式和原型模式相结合。对于构造函数可以定义实例化对象的属性和方法,而原型对象则定义共享的属性和方法。
---------------待后续
首先对象的构造可以用字面量的方法,但是这种方法有个缺点就是无法复用,就是如果多个对象用到了相同的属性,那么用字面量的方法就会很麻烦,每次都要写。所以就有了使用构造器的方法构造对象。在ECMScript中的构造器有Object、Array、Function、Date、String这五个。构造器方法只要用new就可以创建新的对象。同样,也可以自定义构造函数,构造函数与普通函数无分别,为了有标志性,构造函数的函数名开头用大写。
构造函数有一个属性prototype,这个属性本身就是一个对象,也就是构造函数的原型对象,这个原型对象有个constructor属性,指向构造函数本身。同样对于构造函数,只要用new就可以实例化一个对象,这个实例化对象自带一个指针_proto_指向了其构造函数的原型对象,故这个实例化对象可以使用原型对象上的属性。基本上就是这样子吧。一般的构造对象的模式是构造函数模式和原型模式相结合。对于构造函数可以定义实例化对象的属性和方法,而原型对象则定义共享的属性和方法。
---------------待后续
相关文章推荐
- 面向对象与原型---继承
- 设计模式知识连载(5)---继承_1:子类的原型对象-类式继承
- javascript模拟实现继承,继承一次父类模板和原型对象
- javaScript 基于原型的对象继承
- JavaScript 面向对象思想以及原型、继承
- 对象的原型与继承(一)
- 算法-javascript自实现继承extend(单次继承原型对象和单次继承构造函数)
- 18--26 面向对象程序设计24(深入解析原型继承的概念)
- HTML5_对象-雪花-PK-封装-继承-原型
- 原型对象和继承
- 面向对象--原型继承
- javascript 面向对象全新理练之原型继承
- JavaScript中的对象和原型链,函数继承(转)
- 读书笔记--对象、实例、原型、继承
- Javascript对象原型prototype和继承
- JavaScript对象原型继承关系图
- javascript 用原型继承来实现对象系统
- 继承的简单理解,原型对象继承,类继承,混合方式继承
- javaScrpt对象原型继承法
- 原型模式和基于原型继承的JavaScript对象系统