您好,登錄后才能下訂單哦!
本篇內(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>的主要思想就是把需要解決的問題分解成一個個對象,建立對象不是為了實(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: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ù);
}
在ES6中使用constructor()來定義構(gòu)造函數(shù),作用是初始化對象的屬性(成員變量),構(gòu)造函數(shù)不是必須的,若用戶沒有定義構(gòu)造函數(shù),系統(tǒng)會生成一個默認(rèn)的、無參的構(gòu)造函數(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é)果如下:
// 用類實(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());
在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());
靜態(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í)!
免責(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)容。