静的プロパティと静的メソッド
1.ないクラスインスタンスの属性とメソッドは、自分のクラスの持つ
唯一のクラスを呼び出して2
静的従来の方法と同じ名前のメソッド、ないとの競合
、静的なキーワード(静的メソッド)
静的プロパティ
、クラス名属性名=属性値。
静的プロパティの使用例:
// 職業 クラス職業{ } クラス文字{ コンストラクタ(PFS){ この .pfs = PFS; } } // 静的プロパティが配置ない Character.configを= { 職業:{ 'コンジュラー':1 、 'アーチャー' :2 } } // クラスのインスタンスを作成し 、新たな新しいキャラクター(Character.config.profession [「コンジュラーを」])。
適用例静的メソッド
{Personクラス // 静的メソッドは、 {フォーマット(プログラマー)を静的 programmer.haveGirlFriend = trueに、 programmer.hair = trueに; } } // プログラマカテゴリ クラスプログラマ{ コンストラクタ(){ この .haveGirlFriend = falseに、 この .hair = falseに; } } // 一般的なカテゴリにプログラマのクラスインスタンス CONST =プログラマ新しい新しいプログラマ(); Person.format(プログラマ)。 にconsole.log(プログラマ)。
以下のような式
Pは、クラス内からアクセスすることができる
独自のクラスであります
人=定数クラスP { コンストラクタ(){ ペンシルベニア = 1 ; はconsole.log(P === 人) はconsole.log( 'I鳩手!! GUGU区!!' ); } } 新しい新しい人() ; // 自動的に行わ PERSON1 = CONSTの新しい新クラスP { コンストラクタ(){ ペンシルベニア = 1 ; はconsole.log( 'I鳩手!! GUGU区を!!' ); } }();
セッターゲッター
同様の特性がフックを提供するために、
いくつかの余分なものは、プロパティの値と設定を取得するために行うときに、プロパティ値
ゲッターES5 /セッター
1.オブジェクトリテラル内のget / setメソッドを書きます
CONST OBJ = { _name: '' 、 取得名(){ にconsole.log( '123' )。 戻る この._nameを。 }、 セット名(ヴァル){ この ._name = ヴァル。 } } obj.name = 222 。 console.log(OBJ)。
2. Object.defineProperty
VAR OBJ = { _name: '' }。 Object.defineProperty(OBJ、 '名称' 、{ 得る:関数(){ にconsole.log( '正在访问名' ); 戻り 、この._name; }、 セット:関数(ヴァル){ にconsole.log(「正在修改名' ); この ._name = ヴァル; } })。 obj.name = 10 。 console.log(obj.name)。
ES6の書き込み:
{Personクラスの コンストラクタ(){ この ._name = '' ; } GET名(){ にconsole.logは( ''名前のために利用可能である); リターン `私の名前は$ {で、この; ._name`} } SET名(ヴァル){ にconsole.log( '修飾されている名' ); この ._name = ヴァル; } } 人CONST = 新しい新;パーソン() PERSON.NAME = 'エース' ; にconsole.log(PERSON.NAME)。
クラスAudioPlayer { コンストラクタ(){ この ._status = 0 。 この .status = 0 ; この.INIT(); } のinit(){ CONSTオーディオ = 新しいオーディオ()。 audio.src = '....' ; audio.oncanplay =()=> { audio.play()。 この .status = 1 。 } } (ステータスを取得){ 戻り 、この._statusと、 } のセット状態(ヴァル){ STATUS_MAP CONST = { 0: 'ポーズ' 、 1 'プレイ' 、 2 '読み込み' }; //は、コピーボタンを変更する 。document.querySelector( 'アプリ.play-BTN位')のinnerText = STATUS_MAP [ヴァル]; この ._status = ヴァル; } } オーディオCONST = 新しい新しい AudioPlayer()。
名前のクラス名
クラス虎{ } はconsole.log(Humen.name)。// 虎 CONST虎 = クラスP { } はconsole.log(Humen.name)。// P
新しいキーワードクラスの後ろにnew.targetポイント
クラスの車{ コンストラクタ(){ はconsole.log(新しい.TARGET)。 } } 新しいカー()。
シンタックスシュガー
機能カー(){ IF((!この instanceofは{車)) スローエラー( 'コールが、新しいキーの車を使用する必要があります' ); } } 新しいカー();
シミュレーションは、ES5で:
コンストラクタは、
空のオブジェクトを作成1.
プロトタイプ空のオブジェクトとして2 prototypeプロパティコンストラクタ
3.この割り当ての空のオブジェクト
4つのエグゼクティブ関数
はこの値を返さない関数が返された場合5. [nullのオブジェクトの前に戻ります]
機能人(名前、年齢){ この .nameの= 名前; この .age = 年齢; } にconsole.log(新しい人( '张三'、11))。
関数コンストラクタ(FN、引数){ // FNにプロトタイプとして作成されたオブジェクト VAR _this = Object.create(fn.prototype); //は、パラメータ渡し関数実行 VAR RES = fn.apply(_this、引数)を、 復帰 RES ?RES:_thisは; } 機能人(名前、年齢){ この .nameの= ;名前 この .age = 年齢; } Person.prototype.say = 関数(){ にconsole.log( + '私の名前は' この.nameの)を; } VAR人=コンストラクター(人、[ '张三'、12 ])。 console.log(人)。