首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同名属性面向对象编程中阴影属性是如何工作的

同名属性面向对象编程中阴影属性是如何工作的
EN

Stack Overflow用户
提问于 2022-09-03 11:58:41
回答 1查看 37关注 0票数 0
代码语言:javascript
复制
const myDate = new Date(1995, 11, 17);

console.log(myDate.getYear()); // 95

myDate.getYear = function() {
  console.log('something else!')
};

myDate.getYear(); // 'something else!'

在这个上传的代码中,预期的输出是“this”,但我不明白当我们在对象原型中定义同名的对象时,它将如何创建阴影,以及构造函数如何在其上工作。

EN

回答 1

Stack Overflow用户

发布于 2022-09-03 13:54:57

Javascript继承通过在prototype类的对象实例上定义新方法来工作。例如:如果要扩展一个类基,则创建一个新函数,并将其原型设置为Base实例,然后在该实例上添加任何您想要的额外方法。

实例是带有指向原型的指针的空对象。访问属性的逻辑是先检查它自己的对象,然后打开原型链,然后在属性不在的情况下返回undefined。例如:如果您在设置this.getYear之前和之后编写它,您将得到两个不同的结果,因为访问器将开始在实例上查找属性,然后结束其搜索。

V8和现代JS引擎已经有了不需要进入这个兔子洞的选项,但是它的工作方式仍然应该像它仍然是一个链接的对象列表一样。

当然还有。任何属性都可以是一个方法,而且您不能有一个方法和一个属性具有相同的名称,因为它们共享名称空间。例如:您可以执行此myDate.getYear = 2022;,这样myDate.getYear将返回2022,但myDate.getYear()将以应用程序错误结尾,因为该属性不包含可应用的函数对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73592081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档