先看例子: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"
這種寫法僅僅是定義一個對象,其中屬性和方法之間用逗號隔開,若是是定義類的話那麼不能用逗號隔開,二者很像,要注意區分。