面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类能够建立任意多个实例对象,通常具备封装、继承、多态的特性!但JS中对象与纯面向对象语言中的对象是不一样的,ECMA标准定义JS中对象:无序属性的集合,其属性能够包含基本值、对象或者函数。能够简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字能够访问相映射的值(值能够是基本值/对象/方法)。html
原型模式如类模式同样,都是是一种编程泛型,即编程的方法论。另外最近大红大紫的函数编程也是一种编程泛型。JavaScript之父Brendan Eich在设计JavaScript时,从一开始就没打算为其加入类的概念,而是借鉴了另外两门基于原型的的语言:Self和Smalltalk。编程
既然同为面向对象语言,那就得有建立对象的方法。在类语言中,对象基于模板来建立,首先定义一个类做为对现实世界的抽象,而后由类来实例化对象;而在原型语言中,对象以克隆另外一个对象的方式建立,被克隆的母体称为原型对象。函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>js面向对象编程</title> </head> <body> <script> function Person(chexing,yanse,neishi){ this.chexing=chexing; this.yanse=yanse; this.neishi=neishi; this.che=function(){ console.log("你们好这是一辆"+this.chexing+",它的颜色是"+this.yanse+",它的内饰是"+this.neishi+"!") } } var yueye=new Person("牧马人越野车","绿色的","简约精致的"); var paoche=new Person("法拉利跑车","红色的","豪华舒畅的"); yueye.che(); paoche.che(); </script> </body> </html>