class類的特性(上)
es6 的類,完全可以看作es5建構函式的另一種寫法。class
point
typeof point //
"function"
point === point.prototype.constructor //
true
上面**表明,類的資料型別就是函式,類本身就指向建構函式。
建構函式的prototype屬性,在 es6 的「類」上面繼續存在。事實上,類的所有方法都定義在類的prototype屬性上面。
class
point
tostring()
tovalue() }//
等同於point.prototype =,
tostring() {},
tovalue() {},
};object.assign只拷貝當前那一層的基本資料型別
let target = ;
let source1 = ;
let source2 = };
let obj =object.assign(target, source1, source2);
console.log(obj) //}
obj.data.ff //
1source2 .data.ff="
fffffffff
"console.log(obj) //}
obj.data.ff //
"fffffffff"
類不顯式定義constructor的話,引擎會自動加。
類必須new呼叫,而建構函式可以直接呼叫。
constructor方法預設返回例項物件(即this),完全可以指定返回另外乙個物件。
class
foo
}new
foo() instanceof foo
//false
上面**中,constructor函式返回乙個全新的物件,結果導致例項物件不是foo類的例項。
與 es5 一樣,例項的屬性除非顯式定義在其本身(即定義在this物件上),否則都是定義在原型上(即定義在class上)。
//定義類
class
point
tostring()
}var point = new point(2, 3
);point.tostring()
//(2, 3)
point.hasownproperty('x
') //
true
point.hasownproperty('
y') //
true
point.hasownproperty('
tostring
') //
false
point.__proto__.hasownproperty('
tostring
') //
true
上面**中,x和y都是例項物件point自身的屬性(因為定義在this變數上),所以hasownproperty方法返回true,而tostring是原型物件的屬性(因為定義在point類上),所以hasownproperty方法返回false。這些都與 es5 的行為保持一致。
由於本質上,es6 的類只是 es5 的建構函式的一層包裝,所以函式的許多特性都被class繼承,包括name屬性。
name屬性總是返回緊跟在class關鍵字後面的類名。
總結:類中的方法能被例項繼承。
類中的this指向例項。
static方法(靜態方法):不能被例項呼叫,只能被類呼叫。父類中的static方法,能被子類繼承。
static方法中的this指向類。
例項屬性:之前一般在constructor()方法裡面定義。現在直接與例項方法同級定義。(例項屬性的新寫法)
靜態屬性:
static prop = 1
;新寫法,直接在前加static。只能被類呼叫。
私有方法和私有屬性:是只能在類的內部訪問的方法和屬性,外部不能訪問。(作用域影響)
私有屬性和私有方法:目前是提案,是前面加# 如:#a。
略
Class類的使用
萬事萬物皆物件。類也是物件,是class類的例項物件,稱為該類的 類型別 通過乙個例子說明3種表示類型別的方法,以及用類型別建立類物件 class foo public class classdemo catch classnotfoundexception e system.out.println...
令人振奮的Class 上
可以在這裡測試 es2015中定義類 clss me 例項化類 let m new me console.log m.showname 類中屬性的使用 class me 例項化類 let m new me m.showname 這裡就定義了age alert m.age 18構造方法 class m...
令人振奮的Class 上
可以在這裡測試 es2015中定義類 clss me 例項化類 let m new me console.log m.showname 類中屬性的使用 class me 例項化類 let m new me m.showname 這裡就定義了age alert m.age 18構造方法 class m...