ES6 では、グローバル シンボルとローカル変数が競合しています。コードは次のとおりです。
var firstName = Symbol();
var lastName = Symbol();
class Person {
constructor(firstName, lastName){
this[firstName] = firstName;
this[lastName] = lastName;
console.log(this[firstName] , this[lastName]);
}
greet(name){
return "hello " + name + ", I am " + this[firstName];
}
}
var obj1 = new Person("john","Doe");
console.log(obj1.greet("khaled"));//outputs "hello khaled, I am undefined"
なぜこれが起こるのですか?バグですか?