es7 class 的新特性
function
point
(x, y)
point.prototype.
tostring
=function()
;const p =
newpoint(1
,2);
// 使用 class 之後
class
point
tostring()
}const p =
newpoint(1
,2);
上面的**中定義了乙個「類」 類名是point
。constructor
是它的方法體。所以p.constructor === point.prototype.constructor
class
point
tovalue()
tokeys()
// es7 中的寫法 es6 不支援
name =
"ccc"
}var
const
=new
point(1
,2);
// 等同於
point.prototype =
,tovalue()
,tokeys()
}
上面的 class 裡面定義了乙個tostring()
方法,在point
裡面寫的方法會直接寫在原型上。在 es6 在 class 裡面直接賦值會報錯,在 es7 中不會。
在前面加上 static 關鍵字,該方法不會被例項繼承,只能使用。這種就叫靜態方法
class
fun}
fun.
name()
;// 'myfun'
let fun =
newfun()
;fun.
name()
;// typeerror: fun.name is not a function
上面的**中,name
方法前有static
關鍵字,表示name
是乙個靜態方法,可以fun.name()
呼叫,而不是在fun
呼叫。
class
fun}
class
boxextends
funbox.
name()
// 'myfun'
上面**中,fun
有乙個靜態方法,box
繼承fun
之後可以呼叫這個方法。
可以使用super
,呼叫父類的靜態方法。
class
fun}
class
boxextends
fun}
box.
name()
// 'myfun,ccc'
我在上面文章說了,在es7
中可以直接static prop = ***
寫靜態屬性,也可以myname = 'ccc'
寫私有屬性
class
fun myname =
'ccc'
;// 私有屬性
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 類 這個...
es6 基本語法
es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...