JavaScript - 将对象文字作为第二个参数传递给 Object.create()

2023-11-29

参考下面的JavaScript代码片段,问题:

  1. 为什么对象字面量 {item: {value: "foobar"}} 在分配给变量时(如第 1 行)与作为参数传递给 Object.create() (如第 5 行)时的行为不同?

  2. 第 5 行和第 8 行有什么区别 - 即为什么第 5 行是将第二个参数传递给 Object.create() 的正确方法,而不是第 8 行(覆盖委托中的 item 属性)?

代码片段:

 1 var obj = {item: {value: "foobar"}};
 2 console.log(obj.item);            // [object Object]
 3 console.log(obj.item.value);      // foobar

 4 var delegate = {item: "xxx"};
 5 var obj1 = Object.create(delegate, {item: {value: "foobar"}});
 6 console.log(obj1.item);          // foobar
 7 console.log(obj1.item.value);    // undefined

 8 var obj2 = Object.create(delegate, {item: "bar"});
 9 console.log(obj2.item);          // <nothing>

发生这种情况是因为根据此参考:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create

Object.create接收一个以“属性描述符”作为第二个参数的对象,而不是简单的key:value pairs.

请参阅这篇博文:http://ejohn.org/blog/ecmascript-5-objects-and-properties/有关属性描述符的描述。

属性描述符是一个对象,它描述每个属性,而不仅仅是属性值。从你的代码片段来看:

2 obj.item // [object Object] since item is the object {value:"foobar¨}

6 obj1.item // foobar, the descriptor says that the value 
            // of item is "foobar"

7 obj1.item.value // undefined since item="foobar", value is part of
                  // the object that describes "item" not item itself

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

JavaScript - 将对象文字作为第二个参数传递给 Object.create() 的相关文章

  • 在 Three.js 中绕点旋转对象的正确方法是什么?

    关于 Three js 的大多数教程 问题都建议使用 Three js 绕点旋转对象的方法是在要旋转的位置创建父对象 附加对象 然后移动子对象 然后 当父级旋转时 子级围绕该点旋转 例如 Make a pivot var pivot new
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • 使用本地存储在从另一个表保存的 HTML TABLE 中打印 JSON,以便我在另一个页面上打印我的表

    在我的作业中 我必须使用用户输入中的数据并将数据保存在本地存储中 我必须以水平表格式将这些数据从本地存储打印到其他页面 为此 我编写了用于用户输入并将数据保存在本地存储中的代码 div p p div
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 使用显卡代替 GDI+ 进行图像操作

    我有一个问题 这可能是一个白日梦 但我想知道我的 Stack Overflow 同伴是否可以帮助我 在我工作的公司 我们这样做billions每月的图像处理次数 基本上 我们拍摄一张巨大的图像 将其切成 256 像素的方形图像 对它们进行颜
  • Mongoose 架构:如何设置数组中的最大项目数?

    我有一个猫鼬模式 其中包含一个对象数组和一个字符串数组 在这两种情况下 如何设置验证器以将可以插入的项目数量限制为 10 个 todoList type String pictures type String 没有默认值maxlength数
  • 如何删除带孔多边形上的顶点(节点)(Google 地图 V3)

    我从以下位置获取了这个示例 解决方案 伊恩 格兰杰 但我添加了一个带内孔的多边形 这个例子对于外部顶点路径工作正常 但对于内部顶点路径则不行 我需要为内部和外部节点实现事件监听器 因为在内部顶点发生火灾事件时 删除外部顶点 效果不太好 有人
  • Case 语句 - 根据条件值隐藏/取消隐藏

    如果 case 值为 否 我会尝试隐藏一列 我将其保存在工作表中 而不是模块中 Private Sub Worksheet Change ByVal Target As Range ActiveSheet Activate If Not A
  • 将用户的键盘输入过滤到 JTextField (swing)

    如何在输入 JTextField 之前限制键盘输入 swing 我只想允许用户输入 0123456789abcdef 个字符 且不超过 1 个 or char 我的 JTextField 是单行输入字段 thanks 您可以通过以下方式实现
  • 为什么我们需要 SqlCeCommand.Parameters.AddWithValue() 来插入值?

    我有一个 C WPF 桌面应用程序 它使用 SQL Compact 3 5 作为其嵌入式数据库 在插入函数中有 using SqlCeCommand com new SqlCeCommand INSERT INTO FooTable VAL
  • 我可以根据字段的值获取枚举吗?

    我想根据其字段值获取特定的枚举 Enum public enum CrimeCategory ASBO Anti Social Behaviour BURG Burglary CRIMDAM Criminal Damage And Arso
  • Python 优雅的 int(string,base) 逆函数

    Python 允许使用 2 36 范围内的任何基数从字符串转换为整数 使用 int string base 我正在寻找一个优雅的反函数 它接受一个整数和一个基数并返回一个字符串 例如 gt gt gt str base 224 15 ee
  • Python从父级子文件夹导入

    我有个问题 我有一个这样的目录设置 folder main py stuff init py function py items init py class py 我的问题是如何将 class py 导入到 function py 中 此设
  • Android 中的嵌套形状

    我正在尝试绘制一个具有三个矩形的形状 纯色 gradient 白线 我怎么做 当我尝试这个时 它不起作用 布局具有父颜色
  • 单击时 WPF 按钮闪烁为白色

    我刚刚创建了 wpf 按钮 当我单击该按钮时 它会像闪烁一样变为白色 并在释放按钮时变回原始颜色 可能是什么问题呢 我没有使用任何效果 下面是我的按钮 xaml 请指教
  • 将 404 错误页面重定向到 Tomcat 中 Spring MVC Web 应用程序的自定义页面

    我正在使用 tomcat 7 并且在 tomcat 7 中构建并部署了 Spring MVC web 应用程序 并且它工作得非常好 我想要的是 每当我的服务器上发生 404 错误时 它应该被重定向到我在 web 应用程序中构建的自定义页面
  • openGL glx.h 缺少 xcode 4 mac lion 形式

    我正在尝试设置一个示例项目 它使用 GLSDK 我使用 premake 设置它 将项目基础 sdk 设置为 10 6 因为我使用的是 xcode 4 但是当我尝试编译时 我从示例文件中得到 GL gl h not found 因此 我手动添
  • ASM:“cmp”的操作数类型不匹配

    我正在执行 x86 汇编代码 并且不断收到此错误 cmp 的操作数类型不匹配 它出现的代码行是 cmpb rdi 0 在 AT T 语法 您使用的语法 中 指令有一个尺寸后缀来指示操作数的大小 尺寸后缀为 b byte 1 bytes w
  • 泛型超级与扩展

    正当我以为我终于理解了泛型时 我遇到了以下示例 public class Organic
  • SQLAlchemy 为每个查询添加注释

    我试图让 SQLAlchemy 为我提交的每个查询添加注释 我从文档中知道我可以做这样的事情 from sqlalchemy sql expression import Insert compiles Insert def prefix i
  • 用于连字符、下划线和数字的 Elasticsearch 自定义分析器

    诚然 我对ES的分析部分不太熟悉 这是索引布局 mappings event properties ipaddress type string hostname type string analyzer my analyzer fields
  • 如何滚动列表视图背景与项目

    我设置了一个图像作为Listview背景 如果我想随着项目滚动它 我该怎么办 例如 1是背景 如果我向下滚动Listview 它将改变从 1 1 1 1 1 1 1 to 1 1 1 1 1 1 1 也许我可以扩展listview并覆盖di
  • 如何使用Python创建一个简单的饼图

    我一直在尝试使用 python 生成一个简单的饼图 仅使用两个变量 代表百分比 我总是遇到错误 vcvarsall bat not found安装时matplotlib包 为此是否不可避免地安装 Visual Studio 不需要安装 Vi
  • JavaScript - 将对象文字作为第二个参数传递给 Object.create()

    参考下面的JavaScript代码片段 问题 为什么对象字面量 item value foobar 在分配给变量时 如第 1 行 与作为参数传递给 Object create 如第 5 行 时的行为不同 第 5 行和第 8 行有什么区别 即