js 類繼承extends


先看例子:

<!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"

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM