2

js的面向对象编程的理解

面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装、继承、多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义JS中对象:无序属性的集合,其属性可以包含基本值、对象或者函数。可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)。

官方解释:

原型模式如类模式一样,都是是一种编程泛型,即编程的方法论。另外最近大红大紫的函数编程也是一种编程泛型。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>

效果图:

图片描述

注:

1.构造函数始终都应该以一个大写字母开头。

2.要创建Person的新实例,必须使用 new 操作符。


zeyu
219 声望3 粉丝

坚持不懈,继续努力。