class的基本语法
class addhander{
constructor(x,y){
this.x = x;
this.y = y;
}
add(){
return this.x + this.y;
}
}
var a = new addhander(2,2);
console.log(a.add());
console.log(typeof(addhander));
console.log(addhander.prototype.constructor === addhander);
console.log(a.proto === addhander.prototype);
//typeof(addhander)=function
本质上是一个语法糖,是一个函数。这种语法糖形式看起来和实际原理不一样的东西,只是形式上强行模仿,却失去了他的本性和个性。
js继承
//动物
function Animal(){
this.eat = function(){
console.log("animal eat")
}
}
//狗
function Dog(){
this.bark = function(){
console.log("dog bark")
}
}
Dog.prototype = new Animal(); //绑定原型,实现继承
//哈士奇
var haishiqi = new Dog();
clss实现继承
class Animal{
constructor(name){
this.name = name ;
}
eat(){
alert(this.name + “eat”)
}
}
class Dog extends Animal{
constructor(name){
super(name) //必须写上,
}
say(){
alert(this.name + "say")
}
}
const dog = new Dog("哈士奇")
dog.say()
dog.eat()
总结
- Class在语法更加贴合面向对象的写法
- Class实现继承更加易读,易理解
- Class更易于写java等后端语言的使用
- Class本质上还是语法糖,使用prototype