es6提供了更接近傳統語言的寫法,引入了class(類)這個概念,作為物件的模板。通過class關鍵字,可以定義類。基本上,es6的class可以看作只是乙個語法糖,它的絕大部分功能,es5都可以做到,新的class寫法只是讓物件原型的寫法更加清晰、更像物件導向程式設計的語法而已。
例子:
//es5寫法
function pointes5(x, y)
pointes5.prototype.tostring = function () ;
var p = new pointes5(1, 2);
//定義類 es6
class pointes6
} tostring()
}var p2 = new pointes6(1, 2);
console.log(p2.hasownproperty('x')) // true
console.log(p2.hasownproperty('y')) // true
console.log(p2.hasownproperty('tostring')) // false
console.log(p2.hasownproperty('say'))
console.log(p2.__proto__.hasownproperty('tostring')) // true
constructor方法是類的預設方法,通過new命令生成物件例項時,自動呼叫該方法。乙個類必須有constructor方法,如果沒有顯式定義,乙個空的constructor方法會被預設新增。
constructor方法預設返回例項物件(即this),完全可以指定返回另外乙個物件。
例子:
class foo
}new foo() instanceof foo // false
上面**中,constructor函式返回乙個全新的物件,結果導致例項物件不是foo類的。
類的建構函式,不使用new是沒法呼叫的,會報錯。這是它跟普通建構函式的乙個主要區別,後者不用new也可以執行。
生成類的例項物件的寫法,與es5完全一樣,也是使用new命令。如果忘記加上new,像函式那樣呼叫class,將會報錯。
與es5一樣,例項的屬性除非顯式定義在其本身(即定義在this物件上),否則都是定義在原型上(即定義在class上)。
ES6基本的語法 八 Class
es7 class 的新特性 function point x,y point.prototype.tostring function const p newpoint 1 2 使用 class 之後 class point tostring const p newpoint 1 2 上面的 中定義...
es6隨手記 Class的基本語法
es6中的類 實際上是建構函式的另一種寫法 class aa var b new aa b.dostuff aaa 實際上類上的所有方法也都定義到了這個類的prototype屬性上 上面等同於 aa.prototype 類上定義的方法是不可列舉的,這個和es5中有所區別。所以可以使用下面方法 obj...
ES6之 class的基本語法(類)
es6之前,我們都是通過建構函式來生成例項物件 function point x,y point prototype.sum function let point newpoint 1 2 console.log point.sum 3es6 提供了更接近傳統語言的寫法,引入了 class 類 這個...