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"

这种写法仅仅是定义一个对象,其中属性和方法之间用逗号隔开,如果是定义类的话那么不能用逗号隔开,两者很像,要注意区分。

 
原文地址:https://www.cnblogs.com/sweeeper/p/10942220.html