溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

es6類的靜態(tài)成員是什么

發(fā)布時間:2022-11-04 09:39:19 來源:億速云 閱讀:247 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“es6類的靜態(tài)成員是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“es6類的靜態(tài)成員是什么”吧!

在es6中,由類直接調(diào)用的屬性和方法叫靜態(tài)成員。在類里面對變量、函數(shù)加static關(guān)鍵字,那它就是靜態(tài)成員;靜態(tài)成員不會被實(shí)例化成為新對象的元素。靜態(tài)成員和實(shí)例成員的區(qū)別:1、實(shí)例成員屬于具體的對象,而靜態(tài)成員為所有對象共享;2、靜態(tài)成員是通過類名或構(gòu)造函數(shù)訪問,實(shí)例成員是通過實(shí)例化的對象訪問。

面向?qū)ο?/strong>

面向?qū)ο?/strong>的主要思想就是把需要解決的問題分解成一個個對象,建立對象不是為了實(shí)現(xiàn)一個步驟,而是為了描述每個對象在解決問題中的行為,面向?qū)ο蟮暮诵氖?strong>對象。

面向?qū)ο蟮膬?yōu)勢:

  • 模塊化更深,封裝性強(qiáng)

  • 更容易實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯

  • 更易維護(hù)、易復(fù)用、易擴(kuò)展

面向?qū)ο蟮奶卣鳎?/strong>

  • 封裝性: 對象是屬性和行為的結(jié)合體

  • 多態(tài)性: 同一消息被不同的對象接收后 會產(chǎn)生不同的效果

  • 繼承性: 子類可以繼承父類的信息

ES6面向?qū)ο笳Z法

ES6:ES是ECMAScript的簡寫,它是JavaScript的語法規(guī)范。ES6是在ES5基礎(chǔ)上擴(kuò)展,增加了面向?qū)ο缶幊痰南嚓P(guān)技術(shù)以及類的概念。

類和對象

:具有相同屬性和行為的集合稱為類(類是對象的抽象),類中的大多數(shù)數(shù)據(jù)只能用本類的方法進(jìn)行處理。
對象:是類的實(shí)例(是類的具體化)

class關(guān)鍵字:用來定義類的

class 類名{// "類名"是一個用戶標(biāo)識符 通常建議首字母大寫
           屬性;
           函數(shù);
}

構(gòu)造函數(shù)

在ES6中使用constructor()來定義構(gòu)造函數(shù),作用是初始化對象的屬性(成員變量),構(gòu)造函數(shù)不是必須的,若用戶沒有定義構(gòu)造函數(shù),系統(tǒng)會生成一個默認(rèn)的、無參的構(gòu)造函數(shù)。

普通的成員函數(shù)

函數(shù)名([參數(shù)]){
     函數(shù)體語句
}
變量名 = function([參數(shù)]){
      函數(shù)體語句
}
            class Person{
                constructor(name,age,sex){// 構(gòu)造函數(shù) 初始化對象的成員
                    this.name = name;// this指向構(gòu)造函數(shù)新創(chuàng)建的對象
                    this.age = age;
                    this.sex = sex;
                }
                    tt = function(){ //普通的成員函數(shù)
	                    console.log(this.name);
	                    console.log(this.age);
	                    console.log(this.sex);
                	}	
            }
            var p = new Person('李相赫',25,'男')// p1是一個對象 通過調(diào)用構(gòu)造函數(shù)對p1的三個屬性進(jìn)行了初始化
            p.fun();
        class Circle{// 定義類Circlie
            constructor(r){
                this.radius = r;
            };
            area(){ // 計算圓的面積
                var s = Math.PI*this.radius**2;
                return s;
            };
            // 計算圓的周長
            CircleLength = function(){
            return 2*Math.PI*this.radius;
            };
        };
        var c1 = new Circle(5);
        console.log('半徑為5的圓的面積='+c1.area());
        console.log('半徑為5的圓的周長='+c1.Circle_length());

結(jié)果如下:

es6類的靜態(tài)成員是什么

		// 用類實(shí)現(xiàn)簡單的四則運(yùn)算
        class Number{// 定義類Number
            constructor(n1,n2){
                this.n1=n1;
                this.n2=n2;
            };
            add(){
                var sum = this.n1+this.n2;
                return sum;
            };
            sub(){
                var sum1 = this.n1-this.n2;
                return sum1;
            };
            mut(){
                var sum2 = this.n1*this.n2;
                return sum2;
            };
            p(){
                if(this.n2!=0){
                    var sum3 = this.n1/this.n2;
                    return sum3;
                }
            }
        }
        var p1 = new Number(12,21);
        console.log(p1.add());
        console.log(p1.sub());
        console.log(p1.mut());
        console.log(p1.p());

ES6中類的繼承

在JavaScript中,繼承用來表示兩個類之間的關(guān)系,子類可以繼承父類的一些屬性和方法,在繼承以后還可以增加自己獨(dú)有的屬性和方法。

語法:

class 子類名 extends 父類名{
       函數(shù)體語句;
};

關(guān)于繼承需要注意:

  • 父類必須已經(jīng)定義

  • 子類又稱為派生類 可以繼承父類的屬性和函數(shù)

  • 子類不能繼承父類的構(gòu)造函數(shù)

super關(guān)鍵字

子類不可以繼承父類的構(gòu)造函數(shù),如果要調(diào)用父類的構(gòu)造函數(shù)可以使用super關(guān)鍵字。

**注意:**在子類的構(gòu)造函數(shù)中使用super調(diào)用父類的構(gòu)造函數(shù),則調(diào)用語句必須作為子類構(gòu)造函數(shù)的第一條語句

調(diào)用父類構(gòu)造函數(shù)

super([參數(shù)])

調(diào)用普通成員函數(shù)

super.函數(shù)名([參數(shù)])

方法覆蓋

若子類中定義的函數(shù)與父類中的函數(shù)同名,子類函數(shù)覆蓋父類中的函數(shù),可以在子類中調(diào)用父類的同名的普通成員函數(shù)來解決

        class Father{ //父類(基類或超類)
            constructor(type,color){
                this.type = type;
                this.color = color;
            }
            money(){
                console.log(100);
            }
            show(){
                console.log('類型:'+this.type);
                console.log('顏色:'+this.color);
            }
        }
        class Son extends Father{ //Son是子類(又稱派生類)
            constructor(type,color,weight){
                super(type,color); //調(diào)用父類的構(gòu)造函數(shù) 要放在首位
                this.weight = weight;
            };
            show(){
                super.show();// 調(diào)用父類的普通成員函數(shù)
                console.log('重量:'+this.weight);
            };
            other(){
                return '子類的其他方法';
            };
        };
        var s1 = new Son('iPhone 12','黑色','3000g');//s1為子類的實(shí)例
        s1.show();
        console.log(s1.other());

es6類的靜態(tài)成員是什么

靜態(tài)成員和實(shí)例成員

靜態(tài)成員:通過類名構(gòu)造函數(shù)訪問的成員

實(shí)例成員:通過實(shí)例對象訪問的成員稱為實(shí)例成員

區(qū)別:

  • 實(shí)例成員屬于具體的對象,而靜態(tài)成員為所有對象共享

  • 靜態(tài)成員是通過類名構(gòu)造函數(shù)訪問,實(shí)例成員是通過實(shí)例化的對象訪問

在ES5中定義靜態(tài)屬性

        function Student(name,age,sex){
            Student.school = '西安郵電大學(xué)';// school是靜態(tài)成員
            this.name = name;
            this.age = age;
            this.sex = sex;// name age sex都是實(shí)例成員
            this.show = function(){
                console.log('姓名:'+this.name);
                console.log('年齡:'+this.age);
                console.log('性別:'+this.sex);
            };
        };
        var f = new Student('李相赫',23,'男');
        f.show();
        console.log(Student.school);// 西安郵電大學(xué)
        console.log(f.school);// undefined

在ES6中靜態(tài)屬性定義

1、先創(chuàng)建類

2、在類的外部定義靜態(tài)屬性:類名.靜態(tài)屬性名

        class Foo{
            constructor(){
                this.color = '紅色';// color是實(shí)例成員
            }
        }
        Foo.prop = 45;// prop是靜態(tài)成員
        var f1 = new Foo();
        console.log('靜態(tài)屬性:'+Foo.prop);// 45
        console.log(f1.prop);// undefined

在ES7中靜態(tài)屬性定義

在類定義時 使用static關(guān)鍵字定義靜態(tài)屬性

        class Foo{
            static prop = 45; //prop是靜態(tài)成員
            constructor(){
                this.color = '紅色';
            }
        }
        var f2 = new Foo();
        console.log('靜態(tài)屬性:'+Foo.prop);// 45
        console.log(f2.prop);// undefined

類和構(gòu)造函數(shù)的區(qū)別

類中的成員方法是定義在類中的,使用類創(chuàng)建對象后,這些對象的方法都是引用了同一個方法,這樣可以節(jié)省內(nèi)存空間。

	class Person {
		sing(){
			console.log('hello');
		}
	}
	var p1 = new Person();
	var p2 = new Person();
	console.log(p1.sing === p2.sing);	// 輸出結(jié)果:true

到此,相信大家對“es6類的靜態(tài)成員是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

es6
AI