Class和普通构造函数有何区别
1 JS 构造函数
2 Class基本语法
3 语法糖
4 继承
JS 构造函数
function MathHandle(x,y) {
this.x = x;
this.y = y;
}
MathHandle.prottotype.add = fucntion () {
return this.x +this.y
};
var m = new MathHandle(1,2)
console.log(m.add())
Class 语法
class MathHandle {
constructor(x,y) {
this.x =x
this.y = y
}
add () {
return this.x +this.y
}
}
const m = new MathHandle(1,2)
console.log(m.add())
语法糖
class MathHandle {
// ....
}
typeof MathHandle //function
MathHandle === MahHandle.prototype.constructor // true
//这种语法糖形式,看起来和实际原理不一样
//形式上强行模仿,Java,C#,却失去了它的本性和个性
class MathHandle{
constructor(x,y) {
this.x = x
this.y =y
}
add () {
return this.x + this.y
}
}
注:class本身就是语法糖
继承-JS
//动物
function Animal() {
this.eat = function () {
console.log("animal eat")
}
}
//狗
function Dog() {
this.bark = function () {
console.log("dog bark")
}
}
Dog.prototype = new Animal()
//哈士奇
var hashiqi = new Dog()
Class继承
clss Animal {
constructor(name) {
this.name =name
}
eat() {
console.log ( '${this.name} eat')
}
}
class Dog extends Animal {
constructor (name) {
this.name = name
}
say () {
console.log('${this.name} say')
}
}
const dog = new Dog('哈士奇')
dog.say()
dog.eat()
function Animal() {
this.eat = function () {
console.log("Animal eat")
}
}
//dog
function Dog(){
this.bark = function () {
console.log("Dog bark")
}
}
//绑定原型,实现继承
Dog,prototype =new Dog()
var hahsiqi = new Dog()
class Animal {
constructor (name) {
this.name = name
}
eat () {
alert (this.name)
}
}
class Dog extend Animal{
constructor(name) {
super(name)
this.name = name
}
}
const dog = new Dog("hashiqi")