js 類繼承extends

先看例子:javascript

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
class map{
print(data){
alert(data)
}
}
class child extends map{
constructor(opt){
super()
this.init(opt)
}
init(opt){
this.data=Object.assign({}, opt);
console.log(this.data.a)
this.print(this.data.a)
}
}
let data={
a:'1',
b:'2'
}
new child(data);
</script>
</body>
</html>html

 

map類裏邊是一些可複用的方法集中放在一塊兒,它能夠衍生出不少子類,它自己是不少子類的交集。例子中的child在實例化的時候傳入數據就是先傳入constructor,可是裏邊要有super(),每一個方法直接不要有逗號。java

 

有時候項目中可能不須要繼承,僅僅是在一個js文件中生成一個類,而後被其餘js文件引用而且new實例化,那麼能夠寫成以下:this

class map{
constructor(opt){
this.init(opt)
}
init(opt){
this.data=Object.assign({}, opt);
console.log(this.data.a)
alert(this.data.a)
}
}
let data={
a:'1',
b:'2'
}
new map(data);spa

 再囉嗦下,有時候一個對象是code

var name = "The Window";htm

var object = { 對象

name: "My Object",繼承

getNameFunc: function() {ip

var that = this;

returnfunction() {

return that.name;

};

}

};

alert(object.getNameFunc()()); //"My Object"

這種寫法僅僅是定義一個對象,其中屬性和方法之間用逗號隔開,若是是定義類的話那麼不能用逗號隔開,二者很像,要注意區分。

相關文章
相關標籤/搜索