先上测试代码:
<script>
class Ceshi {
constructor(){
// 1.constructor中,通过this.来添加方法
this.shili = function(){
console.log(this,'this.shili');
return this
}
// 2.constructor中,通过类名.prototype.方法名来添加方法
Ceshi.prototype.yuanxing = function (){
console.log(this,'Ceshi.prototype');
return this
}
}
// 3.constructor外部,通过命名函数来添加方法
shili1(){
console.log(this,'shili1');
return this
}
// 4.constructor外部,通过匿名函数来添加方法
shili2 = ()=>{
console.log(this,'shili2');
return this
}
}
const a = new Ceshi()
console.log(a.shili1(),'实例');
console.log(Ceshi.prototype,'原型');
</script>
打印结果如下:
可以发现,通过以上四种不同的函数创建方法,挂载在实例上的有this.创建的shili和匿名函数创建的shili2;挂载在原型上的有类名.prototype.方法名创建的yuanxing和命名函数创建的shili1
结论:
创建挂载在实例上方法的方式有:
1.constructor中,通过this.来添加方法
2.constructor外部,通过匿名函数来添加方法
创建挂载在原型上方法的方式有:
1.constructor中,通过类名.prototype.方法名来添加方法
2.constructor外部,通过命名函数来添加方法