JavaScript ES 6のクラスの本質
1808 ワード
es6
-コード1class Math {
//
constructor(x,y) {
this.x = x;
this.y = y;
}
add() {
return this.x + this.y;
}
}
let math = new Math(1,2);
console.log(math.add());
上のコードはjava C〓〓などとこのように似ています.es5
-コード二
//
function Math(x, y) {
this.x = x;
this.y = y;
}
// add ,
Math.prototype.add = function() {
return this.x + this.y;
}
var math = new Math(1,2);
console.log(math.add())
上记のコードの一とコードの二は同じです.実は、es 6のクラスの本当の本質は文法飴です.
信じません.下のを見てください.このMathはどんなタイプですか?
class Math {
// ...
}
console.log(typeof Math);
答えはfunction
です.また
Math === Math.prototype.constructor; // true
これはes5
のコードの中で同じです.function Math(x, y) {
this.x = x;
this.y = y;
}
typeof Math; // "funtion"
Math === Math.prototype.constructor; // true
一緒に置く:es5
function Math(x, y) {
this.x = x;
this.y = y;
}
// add ,
Math.prototype.add = function () {
return this.x + this.y;
}
var math = new Math(1,2);
console.log(typeof Math); // "function"
console.log(Math === Math.prototype.constructor); // true
// ===
console.log(math.__proto__ === Math.prototype); // true
es6
class Math {
//
constructor(x,y) {
this.x = x;
this.y = y;
}
add() {
return this.x + this.y;
}
}
let math = new Math(1,2);
console.log(typeof Math); // "function"
console.log(Math === Math.prototype.constructor); // true
// ===
console.log(math.__proto__ === Math.prototype); // true