首先构造函数声明属性或方法默认使用this.xx写法,那么
1.构造函数中声明的方法一般是在实例对象中,class中声明的方法是在原型对象中
function A(){
this.abc = ()=>{
console.log(123);
}
}
console.log(A.prototype);
//输出结果
//{constructor: ƒ}
//可以看到原型对象上并没有abc方法
//一般来说,构造函数中this指向的都是实例对象,this.abc说明是在实例对象上挂载了abc方法
//那么,在原型上没有abc方法就很正常了
//如果想要挂载到原型,可以使用this.__proto__.abc = ()=>{}中写法
//通过实例对象找到原型对象,并挂载一个abc函数
//并且使用箭头函数,那么abc函数内部的this就指向了实例对象,这样便于对实例对象进行操作
function A(){
this.__proto__.abc = ()=>{
this//这里的this指向实例对象
}
}
console.log(A.prototype);
class A {
abc(){}
}
console.log(A.prototype);
//输出结果
//{abc: ƒ, constructor: ƒ}
//可以看到abc方法是在原型对象中
2.构造函数声明的属性与class声明的属性都是在实例对象中