小白请教一个关于原型的描述符的问题

qqwqqqw139 2019-09-29 10:18:58
向各位大佬请教一个关于prototype的描述符的问题。
本小白最近在看高程3,看到第六章关于用原型做构造函数这里,突然有个疑问,就是我如果要取原型函数的描述符的话,可以使用第六章开始学习的getOwnPropertyDescriptor()方法吗?
然后写了一段代码测试,代码如下
function Person(){
Person.prototype.name="abc";
Person.prototype.sex="sss";
}
per1=new Person();
var pro1=Object.getOwnPropertyDescriptor(Person.prototype,"name");
alert(pro1.value)
比较奇怪的一点就是如果我把per1=new Person();这一句屏蔽了,那么后面那个pro1取值就是undefined,间接导致后面的alert报错。如果不屏蔽的话,pro1取值就可以取到,后面的alert也可以正常弹出之前设置的属性值abc。
请问各位大佬这是怎么回事?
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2019-10-03
  • 打赏
  • 举报
回复
不应该在构造函数内定义prototype中的属性。这样就必须执行一次Person函数之后Person.prototype.name才被赋值。 并且每执行一次Person函数Person.prototype.name都重新被赋值一遍。prototype中的属性是所有实例对象共用的一般不应该重新赋值。 一般prototype中的属性要在构造函数外面定义。 function Person(){ } Person.prototype.name="abc"; Person.prototype.sex="sss"; var pro1=Object.getOwnPropertyDescriptor(Person.prototype,"name"); alert(pro1.value)
oh_Maxy 2019-10-03
  • 打赏
  • 举报
回复
要先构造一个Person对象后,才能通过函数获取对象的某个属性。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧