先看例子:
<!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>
map類里邊是一些可復用的方法集中放在一起,它可以衍生出很多子類,它本身是很多子類的交集。例子中的child在實例化的時候傳入數據就是先傳入constructor,但是里邊要有super(),每個方法直接不要有逗號。
有時候項目中可能不需要繼承,僅僅是在一個js文件中生成一個類,然后被其他js文件引用並且new實例化,那么可以寫成如下:
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);
再啰嗦下,有時候一個對象是
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function() {
var that = this;
returnfunction() {
return that.name;
};
}
};
alert(object.getNameFunc()()); //"My Object"
這種寫法僅僅是定義一個對象,其中屬性和方法之間用逗號隔開,如果是定義類的話那么不能用逗號隔開,兩者很像,要注意區分。