Javascript 中“是……的实例”是什么意思?

2024-05-11

这个问题的答案:JavaScript 函数的原型属性的初始值是多少? https://stackoverflow.com/questions/4073677/what-is-the-initial-value-of-a-javascript-functions-prototype-property

有这样一句话:

任何新创建的 Function 实例的原型的初始值都是 Object 的新实例

据我所知,Javascript 没有类,因此“实例”这个词在我看来没有意义。应该如何解释 Javascript 中的“实例”?

抱歉,我没有足够的代表将我的问题放入该答案的评论线程中。


你说得对,JavaScript 还没有类,但它确实有构造函数,instanceof运算符定义了对象和构造函数之间的关系,以及基于原型链的继承形式。

obj instanceof ctorctor.prototype is on obj的原型链。

以下面的警告为模数,您可以实施instanceof在 EcmaScript 5 中因此

function isInstanceOf(obj, ctor) {
  var proto = ctor.prototype;
  if (typeof obj === "object" || typeof obj === "function") {
    while (obj) {
      if (obj === proto) { return true; }
      obj = Object.getPrototypeOf(obj);
    }
  }
  return false;
}

除非你到处重新分配原型(o = new MyConstructor(); MyConstructor.prototype = somethingElse)应该是这样的情况new MyConstructor() instanceof MyConstructor.

Section 15.3.5.3 http://es5.github.com/#x15.3.5.3详细解释了这一点。

15.3.5.3[[HasInstance]] (V)

假设 F 是一个 Function 对象。

当使用值 V 调用 F 的 [[HasInstance]] 内部方法时,将执行以下步骤:

  1. 如果 V 不是对象,则返回 false。

  2. 令 O 为调用属性名为“prototype”的 F 的 [[Get]] 内部方法的结果。

  3. 如果 Type(O) 不是 Object,则抛出 TypeError 异常。

  4. Repeat

    1. 令 V 为 V 的 [[Prototype]] 内部属性的值。
    2. 如果 V 为空,则返回 false。
    3. 如果 O 和 V 引用同一个对象,则返回 true。

这并不是故事的全部,因为宿主对象(如 DOM 节点)可以实现[[HasInstance]]然而,他们喜欢内部方法,但大多数浏览器实现宿主对象以使其行为尽可能接近本机对象。

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

Javascript 中“是……的实例”是什么意思? 的相关文章

  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 如何测试 javascript 闭包内的函数

    这似乎是不可能的 也可能是 但我正在尝试更多的 TDD 但我总是在闭包方面碰壁 假设我有以下内容 function createSomething init function privateMethod param return init
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • 无法在 SBT 中运行 Apache Spark 相关单元测试 - NoClassDefFoundError

    我有一个简单的单元测试 使用SparkContext 我可以在 IntelliJ Idea 中运行单元测试 没有任何问题 但是 当尝试从 SBT shell 运行相同的测试时 我收到以下错误 java lang NoClassDefFoun
  • 跟踪 C++ 中递归函数被调用的次数

    我正在尝试编写一个程序 该程序具有一个参数是字符串向量的函数 我想在该函数上使用递归 但每次调用该函数时 我想更改参数 例如 fun stringArray i 其中 i 是调用该函数的次数 因此 以更简单的方式 如下所示 但我需要跟踪函数
  • 用于裁剪和转置视频的 FFMPEG 命令放大后质量较差

    我正在尝试将尺寸通常为 960x720 的 mp4 视频转换为方形 480 480 视频 但它通常看起来被压扁 命令是 y i s vf crop 480 480 transpose d threads 5 metadata s v rot
  • Python 中最宽容的 HTML 解析器是什么?

    我有一些随机的 HTML 我使用 BeautifulSoup 来解析它 但在大多数情况下 gt 70 它会令人窒息 我尝试使用Beautiful soup 3 0 8和3 2 0 3 1 0以上有一些问题 但结果几乎相同 我可以从我的脑海中
  • 如何在UIWindow中添加视图?

    我想添加一个视图UIWindow与以下代码 AppDelegate delegate AppDelegate UIApplication sharedApplication delegate UIWindow window delegate
  • Javascript 连接 [重复]

    这个问题在这里已经有答案了 我在在线 javascript 测验中发现了以下代码片段 我无法理解这种串联在 JS 中是如何工作的 有人可以解释一下这是如何工作的吗 output foo output foo Javascript 尝试应用
  • swift:移动动画

    我在故事板中有 viewController 还有4个正方形 我想将我的方块放在视图中 首先我想显示两个正方形 如果我按下按钮 我希望我的红色 2 个方块向左移动 然后显示接下来的 2 个蓝色方块 就像这部动画 我需要创建一个scrollV
  • 为什么我的原生 C++ 代码在 Android 上运行速度比 Java 慢很多?

    我将 Java 代码的某些部分移植到 C 以加快 Android 上的计算速度 这是一个物理子例程 我发现本机代码的运行速度比 Java 代码慢几倍 我认为我的项目配置可能有问题 或者可能是数组处理有问题 所以我在 HelloAndroid
  • `class_eval` 字符串中的变量范围是什么?

    我在用class eval编写要在当前类的上下文中执行的代码 在下面的代码中 我想添加一个用于属性值更改的计数器 class Class def attr count attr name attr name attr name to s a
  • Exposé 布局算法

    我正在制作一些项目 其布局类似于 Mac OS X 在 Expos 中对窗口所做的操作 它适应项目的长宽比和可用区域的长宽比 基本上 可用区域分为行和列 每个单元格 行和列的交集 中放置一个项目 这些项目必须保持其纵横比 此处width h
  • Xcode 8.2.1 无法添加文件夹引用

    我的 Xcode 8 2 1 不允许我添加文件夹引用 我尝试过的 我右键单击名为 Unity 的文件夹 然后单击 将文件添加到项目 在选项下选中 创建文件夹引用 我的文件夹被添加为红色文件 而不是通常的蓝色文件夹 我尝试将文件的 类型 更改
  • MaterializeCSS select 不适用于 ng-repeat

    MaterializeCSS 选择重复选项 使用ng repeat 不管用 请帮忙 div class col s12 input field div
  • 无法在 Windows 7 机器中使用 OpenCV 2.4.3、Python 2.7 打开“.mp4”视频文件

    我目前正在进行一个涉及读取 mp4 视频文件的项目 我遇到的问题是它在Windows 7机器上使用Python 2 7 32位 OpenCV 2 4 3 cv2 pyd 代码片段如下 try video cv2 VideoCapture v
  • 无法使用 java 8 在 Windows 10 上安装 elasticsearch 5.1.1

    我正在尝试在安装了 java 8 111 的 Windows 10 笔记本电脑上安装 ElasticSearch 5 1 1 当我尝试安装 Elastic search 时触发错误 C Users 用户名 Downloads elastic
  • 如何通过id获取最近共享的AWS RDS快照?

    我在 AWS RDS 上有 2 个数据库 其中一个用于stage和一个用于production跨 2 个帐户 我正在尝试将数据复制到production to stage每 x 天 我的计划是复制最近的自动备份快照production并分享
  • ios6 中不再调用 viewDidUnload

    我刚刚安装了新版本的 Xcode ios 6 viewDidUnload 现已弃用 在苹果文档中 viewDidUnload 在 iOS 6 0 中已弃用 在内存不足的情况下不再清除视图 因此永远不会调用此方法 但许多应用程序正在使用此回调
  • SQL中StringBuilder的正确使用方法

    我刚刚在我的项目中发现了一些像这样的 sql 查询构建 return new StringBuilder select id1 id2 from table toString 做这个StringBuilder实现其目标 即减少内存使用 我对
  • 尝试在 android studio 中调试注释处理器最终出现异常

    使用Android Studio 3 1 3 等级3 1 2 使用 5005 端口使用默认配置运行远程构建 and 在 gradle properties 文件中 org gradle daemon false org gradle jvm
  • 无法对列数据重新排序

    我有数据框而不是序列 如果我使用len df columns 我的数据有3586列 如何重新排序数据序列 ID V1 V10 V100 V1000 V1001 V1002 V990 V991 V992 V993 V994 A 1 9 0 2
  • Javascript 中“是……的实例”是什么意思?

    这个问题的答案 JavaScript 函数的原型属性的初始值是多少 https stackoverflow com questions 4073677 what is the initial value of a javascript fu