当我们改变父对象的原型时 __proto__ 指向哪里?

2023-12-13

通常,当我们使用“new”关键字创建一个新对象时,实际上__原型__创建对象的属性指向原型父类的属性。我们可以如下测试:

function myfunc(){};
myfunc.prototype.name="myfunction";
var child= new myfunc();
child.__proto__=== myfunc.prototype  ---> true

但是让我们看看当我更改父函数的原型时会发生什么:

myfunc.prototype={};
child.__proto__=== myfunc.prototype  ---> false
child.name   ------> "myfunction"

So if 孩子.__原型__没有指向 myfunc.prototype,那么它指向对象链中的哪里?更重要的是,如果它不指向 myfunc.prototype,那么它如何访问"name"的财产myfunc class?


当您使用时new运算符创建一个对象,将创建一个新的 JavaScript 对象及其内部__proto__属性将被设置为prototype的函数。

在此刻

console.log(myfunc.prototype);

指的是对象

{ name: 'myfunction' }

所以,当你这样做时

var child = new myfunc();

内部

child.__proto__ = myfunc.prototype;

正在发生。现在,这里要理解的重要一点是,在 JavaScript 中,当您使用赋值运算符时,左侧名称将仅引用右侧表达式的结果。所以,在这种情况下,child.__proto__只是该名称所引用的对象的另一个名称myfunc.prototype。现在,两者child.__proto__ === myfunc.prototype并指的是{ name: 'myfunction' }。因此child.__proto__ === myfunc.prototype正在返回true.

现在,当你这样做时

myfunc.prototype = {};

你正在做myfunc.prototype引用新对象{},但是child.__proto__仍然引用旧对象{ name: 'myfunction' }。因此child.__proto__ === myfunc.prototype回报false and child.name仍然说myfunction.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我们改变父对象的原型时 __proto__ 指向哪里? 的相关文章

  • 使用 WMI 查找服务的依赖关系,然后区分依赖的服务和依赖的驱动程序

    MSDN 上有一个代码示例 它使用 WMI 枚举特定服务的所有依赖项 http msdn microsoft com en us library aa393673 v vs 85 aspx http msdn microsoft com e
  • 如何从 JavaScript 中计算 HTML 表格的渲染高度?

    调整窗口大小时 我需要知道表格有多大 以便我可以动态地很好地适应中间的所有其他内容 表格高度仅取决于动态加载的内容 如何在 JavaScript 中计算表格的渲染高度 您可以使用element offsetHeight https deve
  • AngularJS 使用 $apply 而不使用 $scope

    我开始使用 AngularJS 并且接受了用它来编写控制器的约定 而不是用 scope 所以我的控制器看起来像这样 myApp controller SomeController function this myModel id 1 nam
  • 如何在光标下的所有元素上调用 mouseover?

    我有一个网络应用程序 每次单击时都会创建一个点 见下文 当我将鼠标悬停在一堆点上时 我希望光标下的每个点都会触发 mouseover 或 mouseenter 事件 然而 只有一个事件被触发 即堆栈 顶部 的点的事件 当鼠标移动到一堆多个点
  • 使用闭包和自调用函数制作计数器

    我想知道为什么这段代码不起作用 var uniqueInteger function var counter 0 return function return counter console log uniqueInteger 0 cons
  • 零作为 IIFE 中的第一个参数[重复]

    这个问题在这里已经有答案了 In babeljs v6 5 1 class Foo 编译为 use strict var classCallCheck2 require babel runtime helpers classCallChec
  • 使用 NodeJS 让 Discord 机器人发送带有消息的图片

    我有几张照片 全部在 imgur 上 带有直接图像链接 格式 https i imgur com XXXXXX jpg https i imgur com XXXXXX jpg 以及用 NodeJS 制作的 Discord 机器人 我发送这
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • 向对象添加元素

    我需要填充一个 json 文件 现在我有这样的东西 element id 10 quantity 1 我需要添加另一个 元素 我的第一步是使用该 json 将该 json 放入对象类型中cart JSON parse 现在我需要添加新元素
  • 光滑的轮播缓动示例

    我正在使用 Slick Carousel http kenwheeler github io slick http kenwheeler github io slick 但不知道如何合并不同的幻灯片切换 有人有例子可以分享吗 这是我目前拥有
  • Chrome Javascript 调试器暂停时不会重新加载页面

    有时 当我在 Chrome 中调试某些 javascript 并且暂停了 javascript 时 如果我尝试重新加载页面 chrome 只会 继续 调试器 单步执行到下一个断点 似乎没有任何方法可以强制 javascript 完全停止运行
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • 你怎么知道何时使用设计模式? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 任何人都可以阅读 GoF 书来了解什么是设计模式以及如何使用它们 但是弄清楚设计模式何时解决问题的过程是什么 模式的知识是否驱动设计
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 元素中优先考虑 ngclick 而非 nghref

    tl dr 如何强制 Angular 只执行 ngclick 指令 a 元素而不清空 删除href 我的网站在某些元素上有一些自定义行为 模式打开 位置栏更新等 但对于 SEO 索引我also需要它成为一个 a 元素与href包含有效链接的
  • Javascript 选择 onchange='this.form.submit()'

    我有一个带有选择和一些文本输入的表单 我希望在更改选择时提交表单 使用以下方法可以正常工作 onchange this form submit 但是 如果表单还包含提交按钮 则当选择更改时 表单不会提交 我猜有某种冲突 我在这里有什么选择
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 使用 jQuery Tablesorter 操作后如何恢复当前页面?

    我正在使用 tablesorter 但无法找到有关插件 tablesorter 寻呼机的任何文档 问题是我有一个显示一些数据的表 并且在每一行中都有一个删除链接 该链接附加了要删除的元素的唯一标识符 显然 是否可以保存我正在删除的页面 然后
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne

随机推荐

  • C++ 宏乘法是怎么回事

    define MAX 265 std cout lt lt 0 MAX lt lt std endl to my surprise the output is 9 rather than 0 这个 C 宏乘法有什么问题 EDIT 以下是完整
  • 使用 ElementTree 解析具有特殊字符的 XML

    我尝试使用 GET 服务进行解析ElementTree 其内容我不控制 包含非 UTF8 特殊字符 respXML response content decode utf 8 respRoot ET fromstring respXML 第
  • 用前导零填充数字列

    过去几个小时我一直在研究这个问题 我尝试过使用sprintf但它会将列更改为字符 我想要做的就是拥有一个固定宽度的数字列 并用零填充 如果您愿意使用自定义类 则可以编写一个打印方法来执行此操作 制作一个数据框 并为其指定一个自定义类 DF
  • 根据顶部图像的 Alpha/透明度混合两个 uiimage

    我正在尝试将背景与前景图像混合 其中前景图像是带有线条的透明图像 我正在尝试这样做 UIGraphicsBeginImageContext CGSizeMake 320 480 CGContextRef context UIGraphics
  • ORION:获取订阅列表

    我有兴趣访问活动订阅列表 但在阅读了所有有关 API 的 wiki 后 https forge fi ware org plugins mediawiki wiki fiware index php Publish Subscribe Br
  • 与empty、isset、!empty、!isset 混淆

    我有以下内容无法正常工作 GET category 也可以等于0 if empty GET category do something else do something else 我如何重写这个 if 语句来做 3 件不同的事情 做某事如
  • JSOUP - 如何使用 JSOUP 抓取“需要登录”页面

    我在抓取我想要抓取的确定的网站时遇到困难 问题是 成功登录该网站后 我无法访问需要有效登录的链接 例如 public Document executeLogin String user String password try Connect
  • PHP 联系表 - 发送后希望留在我的网站上

    我正在创建 PHP 联系表单我所遇到的只是我的 php 脚本的一个小问题 当电子邮件发送出去时 会调用一个新的 谢谢 页面 因此 带有联系表单的实际网站消失了 但我不希望这种情况发生 如果按下发送按钮我想要stay在我的网站上 显示一个空的
  • 如何对 pandas DataFrame 中的连续值进行分组

    我在 DataFrame 中有一个列 其中包含值 1 1 1 1 1 1 我怎样才能像这样将它们分组 1 1 1 1 1 1 您可以使用groupby按习惯Series df pd DataFrame a 1 1 1 1 1 1 print
  • 在 R 中按列中的行值和行中的列值对 data.frame 进行排序

    我有六只玄凤鹦鹉鸟 Beefy Scoundrel Baston Mattdamon Jesus and Hulkhogan 这些鸟拉屎很多 而且在很多不同的地方 我决定追踪过去两周内这种情况发生的地点和频率 并且我试图找出这些小恶魔今天在
  • 添加内联注释后 Bash 命令停止工作

    在子 shell 中生成的新值的分配在没有尾随注释的情况下也可以工作 newname echo newname sed s TD oldnewTD TD r ftd1 但变量newname如果添加尾随注释 则保持不变 newname ech
  • 暂停所有其他视频,无论页面上有多少视频

    因此 我在一个多页面项目上使用 video js 该项目的页面每个页面上的视频数量不同 我想播放一个视频来暂停页面上播放的任何其他视频 我已经让它工作了 但我的代码只有在专门针对该页面制作时才有效 而不是单独处理每个页面 HTML 示例
  • 从抽象基类实现纯虚函数:重写说明符有什么意义吗?

    背景 我刚刚偶然发现了一个用例override说明符据我所知 这似乎是多余的 而且也没有任何特定的语义含义 但也许我遗漏了一些东西 因此这个问题 在继续之前 我应该指出 我试图在这里找到答案 但我得到的最接近的是以下线程 并没有真正回答我的
  • Selection.OnAction = "工作簿名称!Macroname"

    假设您有两个工作簿 一个名为 MyWorkbook 另一个名为 PatchMyWorkbook 两个工作簿在保存时都打开 PatchMyWorkbook 有一个宏 用于添加按钮并将 MyWorkbook 的现有宏分配给 MyWorkbook
  • Spring 中的 Elasticsearch HTTP 身份验证

    我想访问受用户名和密码保护的远程elasticsearch https 用户名 密码 aws eu west 1 portal1 dblayer com 11109 在 Spring 中 使用 XML 配置我能够访问我的本地主机弹性 如下所
  • 使用 Jackson 和 Spring-Boot 将 Base64 编码的 JSON 解码为 POJO

    我有一个这样的请求 varA A varB TCFNhbiBKb3NlMRgwFgYDVQQK 关键在哪里varB是一个 base64 编码的 JSON 字符串 像这样的东西 nestedVarB1 some value here nest
  • SymPy 仅打印函数名称

    我正在尝试在 SymPy 中进行一些符号计算 但我无法使用乳胶打印并获得我想要的图形输出 这一直困扰着我 并且花了几个小时 也许是几天 试图找到一种自定义对象打印方式的方法 在 LaTeX 中 在 pprint 表示中 它有很好的文档记录
  • redis dbsize命令的准确性

    准确度如何dbsizeredis 中的命令 我注意到返回的键数dbsize与返回的实际键数不匹配keys命令 这是一个例子 redis cli dbsize integer 3057 redis cli keys wc l 2072 Why
  • 无法调用匿名类方法

    我正在尝试调用一个方法 setPostal String post 我是从一个匿名类创建的 但由于某种原因 编译器在缅因州甚至无法识别它 这是有什么原因吗 我的代码的一部分 地址是Student的内部类 Student public cla
  • 当我们改变父对象的原型时 __proto__ 指向哪里?

    通常 当我们使用 new 关键字创建一个新对象时 实际上 原型 创建对象的属性指向原型父类的属性 我们可以如下测试 function myfunc myfunc prototype name myfunction var child new