对象原型不“实时更新”

2024-03-01

我有以下代码:

var Test = function () {
};
Test.prototype.doSomething = function() {
  return "done";
};

现在,我创建一个 Test 对象

var t = new Test();
alert(t.doSomething());    // Correct alerts "done"

现在我向原型添加另一个方法:

Test.prototype.fly = function() { return "fly"; };
alert(t.fly());       // Correctly alerts "fly" (existing objects get "live udpated")

现在,我使原型指向一个空白对象:

Test.prototype = {};
alert(t.doSomething());    // Continues to alert "done", but why?
alert(t.fly());            // Continues to alert "fly", but why?

var t2 = new Test();
alert(t.doSomething());    // As expected, this does not work
  1. 当我向原型添加方法时,它会正确反映所有新的和现有的对象

  2. 当我通过这样做“空白”原型时<name>.prototype = {};,它只会“删除”新实例,而不删除现有实例。为什么?


打个比方是这样的:

var a = {foo : 'bar'};
var b = a; //the same object as a
var c = a;
var d = a;

a.apple = 'orange';

a = 1;  //a === 1. b, c and d stay the same, pointing to the object with apple

我在这里所做的是替换什么a所指的是物体,但不是物体​​本身。

当你添加fly,您正在修改所有实例共享的单个原型对象,该对象Test.prototype当前指向。

但是当你分配一个空白对象给Test.prototype,你修改了什么Test.prototype正在指着。它不会修改现有实例所指向的内容。但从现在开始,任何新实例都将使用新对象Test.prototype作为他们的原型对象。

如果您熟悉 C,我宁愿将 JS 变量视为指针而不是引用。

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

对象原型不“实时更新” 的相关文章

  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • Ubuntu 10服务器上配置Tomcat6 + apache2.2的问题

    我正在尝试在 Ubuntu 服务器 10 上使用 apache 2 2 配置 Tomcat6 我遵循了很多教程 但我无法使其工作 请问有人可以帮助我吗 这是一些信息 mod jk so 位于 apache 模块文件夹中 我的工人属性 wor
  • IGraphBuilder.RenderFile 中无法播放 MP3 文件并出现 COM 异常

    我是导演节目开发的新手 我正在学习有关直接表演的知识 我正在尝试编写一种播放一些音频文件的方法 它适用于许多 mp3 文件 但对于我的某些 mp3 文件 接口 IGraphBuilder 的方法 RenderFile 抛出以下异常 发生 C
  • 检测滑动手势方向

    这是我尝试模拟滑动手势的代码 因此当我构建移动设备时 我知道它会起作用 没有记录任何内容 我很困惑为什么它似乎不起作用 我希望它在我滑动的控制台中打印出来RTL 从右到左 或LTR 左到右 我不明白我做错了什么 void Update if
  • 如何在 Sails.js 中压缩 JavaScript 和 CSS 资源?

    我正在尝试在 Sails js Node 应用程序中为我的资产启用 gzip 压缩 在生产环境中启动应用程序时 所有资产assets linker js and assets linker styles已成功连接 缩小 丑化 如 Grunt
  • 如何从 CLI 构建 DocC 文档

    所以我已经浏览网页有一段时间了 似乎找不到有关如何构建的答案本机 DocC Xcode 文档 使用 CLI 命令 这俩xcodebuild据我所知 commands 和 Fastlane 不提供构建文档的命令 应该构建文档CI CD Git
  • IllegalArgumentException:ID 未引用此 Activity 内的视图

    我一直在尝试为我的应用程序制作一个主页 其中包含一些现代仪表板和导航抽屉 在我的代码中发现错误 E AndroidRuntime FATAL EXCEPTION main Process com example thinkerlab PID
  • 在 MacOS 上使用 cx_freeze 打包 tkinter GUI 会导致黑色 GUI

    我正在构建一个tkinter一位朋友在运行 macOS Catalina 10 15 2 的 Mac 上使用 Python 3 8 3 的 GUI 并尝试使用冻结它cx freeze 6 1 当我在本地环境中运行 python 应用程序时
  • utf8数据在mysql中看起来很好,但在rails中被破坏了

    我正在为我的一位同事设置一个 Rails 环境 他使用的是 Mac 如果相关的话 我已经从我们的实时 mysql 数据库中提取了数据 并使用该数据创建了一个本地开发数据库 如果我打开 mysql 控制台 并查看其名称字段中具有扩展字符集字符
  • IntelliJ 中的 CLI-Spring Shell

    我正在 IntelliJ 中编写 CLI Spring shell 代码 我运行它并给出一些参数 但是当我输入 insert 并按 Enter 时 控制台不接受它 看起来好像什么也没发生 My code Component public c
  • 如何强制iFrame打开所有链接保留在iFrame中?

    我正在托管一个 iFrame 似乎当链接指向外部域时 它会将其加载到主窗口而不是 iFrame 中 有没有办法强制在同一个 iFrame 中打开链接 注意 我可以向 iFrame 中加载的页面添加任何我想要的内容 使用 Chrome 扩展
  • .NET MVC 3 自定义控制器属性

    这可能是天上掉馅饼 但我想知道是否可以使用自定义控制器属性来完成以下操作 对于大多数控制器 我将向控制器内的每个操作传递一个名为 r 的 URL 参数 r 与我的数据库中的竞赛表中的竞赛 ID 相关联 我希望发生的是 每当调用控制器操作时
  • 增加命中 S3 存储桶端点时允许的最大标头大小

    I am curl 重定向到 S3 存储桶的端点 我必须将一些大标头传递给我的请求 但由于超出了最大标头大小 该请求失败了
  • 使用纯 JavaScript 单击隐藏 Bootstrap 模态框

    我正在研究 Bootstrap Pop Up Modals 我有 2 个名为Button1 Button2 我有 2 个名为Modal1 Modal2 Note Button2是在里面Modal1 Button1在网页上 如果我点击Butt
  • 如何使用 Firebase 将初始数据加载与增量子项分开?

    我有一个应用程序 每 5 秒左右就会有新的子进程添加到 Firebase 中 我有成千上万的孩子 在应用程序加载时 我希望以不同于每 5 秒一次的后续子项的方式处理最初的数千个子项 您可能建议我使用值 处理所有内容 然后使用children
  • 自动装箱与静态数字

    有使用价值吗Integer i NumberUtils INTEGER ONE代替Integer i 1 我不知道自动拳击背后会发生什么 Thanks 基本上它会被编译成 Integer i Integer valueOf NumberUt
  • 将包含 JSON 对象的数据框扩展为更大的数据框

    我有一个带有两列的 pandas 数据框 一个是 ID 另一个是长 JSON 对象 对于数据帧中的每个对象来说都是相同的对象 我的目标是为 JSON 对象中的每个键创建列 这是输入的示例 ID request json 175431467
  • 如何在 5 分钟内使 Django 会话过期?

    我用它来登录用户 def login backend request if request method POST username request POST username password request POST password
  • 如何从表中的列中删除默认值?

    如何更改列以删除默认值 该列是通过以下内容创建的 ALTER table sometable Add somecolumn nchar 1 NOT NULL DEFAULT N 然后修改为 alter table sometable alt
  • 计算每个派生类的类实例

    有没有办法让所有派生类计算它们的实例 如何 用 C C Java 之一编写代码 想象一下 我可以访问根类 例如对象 并且每个其他类都是 直接或间接 从该类派生的 我想要的是 AnyDerivedClass InstancesCount 问题
  • 对象原型不“实时更新”

    我有以下代码 var Test function Test prototype doSomething function return done 现在 我创建一个 Test 对象 var t new Test alert t doSomet