本文部分参考自《极客时间-JavaScript核心原理解析-第13讲》 如有侵权,请联系删除
构造器,是JavaScript中面向对象系统的核心概念之一。跟“props”相比,如果props是静态的结构,那么“构造器”就是动态的逻辑。
如果JavaScript没有了构造器,那么它就只是一个填满了许多数据的静态对象空间。这些空间之间没有关联,也不能衍生,更加不会交互。然而,这就是最初的JavaScript的所谓“面向对象系统”的雏形。
基于对象的JavaScript
为什么呢?因为JavaScript1.0的时代,也就是最早最早的JavaScript其实是没有继承的。
那么为什么没有继承的JavaScript⼀开始就能声称⾃⼰是“⾯向对象”的、“类似Java”的⼀⻔语⾔呢?其实这个讲法是前半句对,后半句不对。JavaScript和Java名字相似,但是语⾔特性却⼤是不同,这就跟北京的“海淀五路居”和“五路居”⼀样,差了得有20公⾥。
那前半句为什么是对的呢?JavaScript 1.0连继承都没有,为什么⼜能称为⾯向对象的语⾔呢?
JavaScript确实已经可以将函数作为构造器,并且在函数中向实例对象(一般就是this)抄写类声明的属性。在早期的面向对象理论里面,就已经可以称这个函数为类,而通过类所创造( new )出来的就是对象了。
所以,在有了类以后要,JavaScript就成为了一门面向对象语言,并且也是一门有类语言。
所以JavaScript从1.0开始就有类,在这个类(也就是构造器)中采用的是所谓“类抄写”的方案,将类似拥有的属性声明都抄到对象上,而这个对象,就是JavaScript中的this。
下面是示例代码
function Car(){
this.name = "Car"
this.color = "Red"
}
var a = new Car()
// code more..