js面向對象編程的理解

js的面向對象編程的理解

面向對象的語言有一個標誌,即擁有類的概念,抽象實例對象的公共屬性與方法,基於類能夠建立任意多個實例對象,通常具備封裝、繼承、多態的特性!但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>

效果圖:

圖片描述

注:

1.構造函數始終都應該以一個大寫字母開頭。

2.要建立Person的新實例,必須使用 new 操做符。

相關文章
相關標籤/搜索