19 classの基本文法
3662 ワード
Classはes 6の文法糖で、es 5も他の方法で実現できます
Class内部の方法 は使用しない.メソッド間では とエラーが発生します.メソッド名は、変数 を使用することができる.が を取得することはできない.クラスのデータ型は を指す.類の中の方法は、実は原型に書かれた に相当する.この形式では、変数リフト は存在しない.
は、 を使用する必要があります.は、デフォルトでは をカスタマイズすることができる.
を用いる.は、 に属する.すべてのクラスインスタンスが1つのプロトタイプオブジェクト を共有する円形オブジェクトを取得する方法 .類 インスタンスオブジェクト インスタンスオブジェクト
小さな知識点 パラメータが文字列である場合、 に戻る.
関数式を使用して、直接使用するクラス を構築できます.クラスには がある.
クラスには独自のプライベートメソッドが必要で、外部ではオブジェクトで使用できない場合があります.以下の解決策がある一般的な方法 を取得することができる.内部アクセスグローバルメソッド Symbol値を使用する一意性
提案,
オブジェクトのメソッドを解釈すると、エラーが発生しやすい.は、 にバインドする.矢印関数 を使用 proxy を使用
思い出矢印関数thisは外層thisを参照し、 は変更しません. proxy基本構文
プロパティで設定可能値取り関数とメモリ関数は、属性の に設定.
classのメソッドの前に、 になります.
スタティツクメソッド構文、メソッド名に になります.静的方法は、インスタンスによって を継承することはできない.静的方法布団類継承 静的方法における を指す.
静的プロパティは、 を追加することができる.
このプロパティは、一般的にコンストラクション関数で使用されます.には2つの機能があります 現在のクラスはnew を使用する必要があります.は、直接使用できないクラス(少しインタフェースに似ている) のみを継承することを定義する.子クラスが親クラスを継承し、子クラスインスタンスを作成するとき、 を指す.類は である.
きそ
let ss = "sayHi"
class Fn {
construct(x) {
this.x = x
}
toString() {
}
[ss]() {
}
}
Obeject.keys(Fn.prototype)
Obeject.getOwnPropertyNames(Fn.prototype)
typeof Fn // function
Fn == Fn.prototype.construct // true
function
;
は使用されません.そうしないと、class
の内部に書く方法は、枚挙にいとまがないので、Object.keys
を用いるFunction
であり、クラス自体は構造関数construct
new
this
インスタンスオブジェクトを返し、return Object.create(null)
クラスのインスタンスオブジェクト
new
this
に直接属性を定義する場合にのみ、この属性はインスタンスオブジェクトFn.prototype
fn.__proto__
(環境に依存)Object.getPrototypeOf(fn)
//
var fn = new Fn(1)
fn.hasOwnproperty('x') // true
//
var ff = new Fn(2)
fn.__proto__ = ff.__proto__ // true
小さな知識点
Object.getPrototypeOf(obj)
es6
でエラーは報告されず、String.protptype
Class式
const MyClass = class Me {
sayHello() {
console.log('Hello')
}
}
MyClass.sayHello()
MyClass.name // MyClass
Me
クラスの内部でのみ使用できるname
属性プライベートメソッド
クラスには独自のプライベートメソッドが必要で、外部ではオブジェクトで使用できない場合があります.以下の解決策がある
_say
、下り線.これは規範的な約束にすぎず、外部は依然としてfn._say
let foo = Symbol('foo')
class Fn {
say() {
//
this[foo]('1')
}
//
[foo](param) {}
}
プライベート属性
提案,
#
はプライベート属性とプライベートメソッドを表す.これは
オブジェクトのメソッドを解釈すると、エラーが発生しやすい.
constructor
においてthis
を手動で方法上の思い出
var pp = new Proxy(target,handler)
Classの値取り関数と保存関数
プロパティで設定可能
class Fn {
get prop() {
}
set prop(val) {
}
}
var descriptor = Object.getOwnPropertyDescriptor(Fn.prototype,"prop")
"get" in descriptor // true
Descriptor
オブジェクト上のClassのGeneratorメソッド
*
を追加するとgeneratorメソッドClassの静的メソッドと静的プロパティ
スタティツクメソッド
static
を追加すると静的メソッドthis
は、現在のクラス静的プロパティ
Fn.prop
によってのみ静的属性new.targetプロパティ
このプロパティは、一般的にコンストラクション関数で使用されます.
new target
は子クラスnew
を使用しない、new.target
はundefined
class Parent {
constructor(name) {
if (new.target == Parent) {
this.name = name;
}else {
throw New Error(' new ')
}
}
}