Dea*_*ool 5 html javascript function typescript ecmascript-6
以下 2 个片段给出了相同的结果。我想知道这两种方法的真正区别是什么,什么时候应该使用一种方法而不是另一种方法。有人可以帮助我理解其中的区别吗?
情况1:
class Person{
constructor(name){
this.name = name;
}
printData(){
console.log(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
案例2:
class Person{
constructor(name){
this.name = name;
this.printData = function(){
console.log(this.name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
不同之处在于实例属性与原型。
当您在构造函数中定义函数时,每个新实例都会定义一个新函数,类似于
{
printData: function () { ... }
}
Run Code Online (Sandbox Code Playgroud)
当您在类中定义方法时,它会在原型中定义并由每个实例共享。
即采用第一种方法,
const p1 = new Person('bob')
const p2 = new Person('rob')
p1.printData === p2.printData // false
Run Code Online (Sandbox Code Playgroud)
采用第二种方法
const p1 = new Person('bob')
const p2 = new Person('rob')
p1.printData === p2.printData // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |