请问老师为什么,console.log(p.name);是undefind, window.Person = Person;不是已经暴露出去了吗
来源:3-5 私有属性和方法
慕田峪1427181
2022-05-13 15:39:11
(function () {
let name = '';
class Person {
constructor(usernam) {
name = usernam;
}
getName() {
return name;
}
}
window.Person = Person;
})();
(function () {
const p = new Person('Alex');
console.log(p.name);
console.log(p.usernam);
console.log(p.getName());
})();
1回答
同学你好, window.Person = Person;是暴露出去了,但是初始let定义的name是变量,constructor中name也没有用this定义,所以name属性不在Person类上,也就不在p上,可以输出p看看

没有属性,只有原型上的getName方法

所以p.name,p.usernam,实例上没有属性的值为undefined。而getName方法中返回的是name变量,Person实例化之后传入了Alex实参,所以usernam形参值为Alex,赋值后name变量的值也为Alex 。
祝学习愉快!
相似问题