CoffeeScript:使用instanceof与Class.constructor.name

2023-11-22

如果我有课:

class Haha
  constructor: (@lolAmount = 1) ->
    alert @lolAmount

我想检查一个对象是否属于正确的类,使用它是否总是安全的constructor.name:

haha = new Haha()
unless haha.constructor.name is 'Haha'
  throw Error 'Wrong type'

还是使用更好instanceof:

haha = new Haha()
unless haha instanceof Haha
  throw Error 'Wrong type'

我支持的一个论点instanceof是在使用时extends:

class BigHaha extends Haha

bigHaha = new BigHaha
console.log bigHaha instanceof Haha #true

但作为一个 JavaScript 操作员,它有多安全——我觉得我应该对此持怀疑态度。

另一方面,与constructor.name正在发生的事情非常清楚。是否保证constructor.name将在所有对象上设置?

感谢您提供任何信息。


首先,constructor也是直接的 JavaScript:

返回对创建实例原型的 Object 函数的引用。

所以当你说o.constructor,你真的是在直接执行 JavaScript,名字constructor对于 CoffeeScript 对象的初始化函数是另一回事。

所以现在你可以选择使用 JavaScriptconstructor属性或 JavaScript 的instanceof操作员。这constructor只是告诉您使用什么“类”来创建对象,instanceof另一方面:

[...]测试一个对象的原型链中是否有prototype构造函数的属性。

So instanceof如果您想允许子类化,这是正确的选择。

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

CoffeeScript:使用instanceof与Class.constructor.name 的相关文章

  • Jasmine 规范未找到 CoffeeScript 中定义的类

    我正在 Rails 3 1 后端构建一个backbone js 应用程序 我使用 CoffeeScript 编写主干类 并使用 Jasmine 通过 jasmine headless webkit 进行测试 给定以下 部分 树 app as
  • 是否可以将 .coffee 脚本文件加载到浏览器并执行?

    我正在尝试将咖啡脚本与 Coffee script js 文件一起加载到 Sample coffee 文件中 并对 HTML 执行一些简单的操作 但我无法加载sample coffee 文件
  • 我可以使用 socket.io-client 连接到标准 websocket 吗?

    尝试使用socket io client连接到用Go编写的websocket服务器 我已使用节点 WebSocket 库成功连接 npm https www npmjs org package ws 所以工作的 Websocket 代码如下
  • PhantomJS 和 iFrame

    我正在使用 phantomjs 1 5 和casperjs http casperjs org 用于我的功能测试 casper require casper create loadImages false casper start http
  • 将行数组转换为列数组

    将任何 等长 行数组转换为列数组的最优雅的方法是什么 Eg 1 2 3 4 5 6 To 1 4 2 5 3 6 这是我到目前为止所拥有的 grid 1 2 3 4 5 6 grid2 for i in grid 0 grid2 push
  • 将 HTML 返回到 AJAX Rails 调用

    读完大卫 海涅迈尔 汉森之后博客文章 https 37signals com svn posts 3697 server generated javascript responses关于服务器生成的 javascript 我决定回顾一下在
  • Rails,咖啡脚本出现语法错误

    我正在尝试使用 jquery ui 库在 Rails 中执行自动完成功能 但是我不断收到语法错误 语法错误 保留字 函数 在线 这是我的 Lesson js coffee 文件 jQuery gt function function spl
  • 主干+rails TypeError:List.Header不是构造函数

    我正在尝试按照从该网站购买的教程进行操作 http www backbonerails com http www backbonerails com 我正在关注该系列的第五集 起床运行 第 1 部分 在视频的 46 52 左右 他有 lis
  • Grunt 中的“验证配置中是否存在属性 ___”是什么意思?

    我有一个用 Coffeescript 编写的简单 Gruntfile use strict module exports grunt gt config src app dist build grunt initConfig config
  • 如何在我的代码中找到 CoffeeScript 1.9.0 重大更改的情况?

    TL DR 是否有任何方法可以识别对 CoffeeScript 的新 1 9 0 行为的违规行为 foo参数命名 现在使用裸露的代码是非法的 并且不会导致警告 错误foo函数中的变量 在CoffeeScript 1 9 0版本中声明 更改了
  • Coffee HAML 中的部分内容 (.hamlc)

    我在 Rails 后端使用backbone js哈姆咖啡 https github com netzpirat haml coffee 它是由haml 咖啡 资产 https github com netzpirat haml coffee
  • CoffeeScript 智能感知

    我使用 Visual Studio 进行开发 并且非常习惯 Intellisense 但是在编写 CoffeeScript 时 您并没有真正获得任何语法检查或智能感知 VS 有没有插件可以实现这个功能 Thanks AFAIK 您只能使用
  • Node/Busboy:获取文件大小

    我使用 Busboy 模块通过下面的 CoffeeScript 代码来解析多部分请求 有时 问题出在 数据 处理程序上 该处理程序针对包含一个文件的请求多次调用 这意味着我需要对每个尺寸进行求和才能得出整个尺寸 此外 文件 处理程序中的文件
  • 如何按顺序运行 Gulp 任务

    在这样的片段中 gulp task coffee gt gulp src src server coffee pipe coffee bare true on error gutil log pipe gulp dest bin gulp
  • 使用 CoffeeScript 以编程方式检查复选框

    如何以编程方式检查 Coffeescript 中的复选框 我知道在 Javascript 中 我可以使用这个 myElement checked true 我可以在 Coffeescript 中执行类似以下操作吗 myElement che
  • 对周围的所有 Node JS 框架/库等感到困惑 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我感觉有点困惑 有很多 Node js 相关 东西 的框架 有人能给我一个概述吗 以下库 框架 其他内容如何相互关联 交互 其中包括什么或
  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • node.js http.request 事件流 - 我的 END 事件去了哪里?

    我正在制定一个狡猾的计划 其中涉及使用 node js 作为另一个服务前面的代理服务器 简而言之 将传入请求分派到静态文件 如果存在 否则 将请求分派给另一个服务 我已经掌握了基础知识 但现在尝试使用 Sencha 来完成整个工作Conne
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • Coffeescript + 单元测试:全局变量?

    我正在尝试使用 Jasmine 对用 CoffeeScript 编写的小型应用程序进行单元测试 我发现很多资料都说单元测试可以在从 CoffeeScript 编译的 JS 上完美地完成 如果所有内容都包装在匿名函数中以避免污染名称空间 如何

随机推荐

  • MLflow:INVALID_PARAMETER_VALUE:模型注册表存储不支持 URI“./mlruns”

    当我尝试在模型注册表中注册模型时 出现此错误 有人可以帮助我吗 RestException INVALID PARAMETER VALUE Unsupported URI mlruns for model registry store Su
  • 文件对话框中设置的 tkinter 文件模式

    为了在文件对话框中获取具有给定扩展名的预期文件集 我在几个地方看到了这样的写入模式 label pattern 模式位于一个字符串中 然而以下不起作用 from tkinter import filedialog as fd fd asko
  • 需要带有背景图像的空 Div 来强制高度并且必须具有响应能力

    我需要以下内容 空 div 没有内容 背景图片设置到div中 背景图像在调整大小时流畅 响应灵敏 我无法设置固定 div 上的尺寸 我尝试的所有方法都无法强制打开 div 以支持背景图像的大小 任何帮助是极大的赞赏 http www eve
  • 如何在没有插件的情况下搜索选择标签html的选项

    我用 html 制作了选择标签 其中包含所有国家 地区的名称 我想使用搜索栏搜索它们的值 而不需要任何插件或附加组件 这可能吗 Answer 是的 您可以首先在此处查看它的实际效果demo 如果您喜欢所看到的内容 请执行以下操作 HTML
  • 充分使用“if”语句或“try/catch”块?

    给我一些你的想法 关于哪种是更好的编码实践 使代码更高效 看起来更漂亮 无论如何 增加和提高你使用 if 语句来预测和捕获潜在问题的能力 或者只是充分利用 try catch 假设这是针对 Java 的 如果重要的话 Edit 我目前正在摆
  • 自动为所有 SQL Server 作业创建脚本

    目前 我正在尝试为 MS SQL2005 服务器的所有 SQL 作业自动生成创建脚本 我发现的一种方法已经完成 手动http msdn microsoft com en us library ms191450 aspx 我发现第二种方法可以
  • 始终保留n个最佳元素的数据结构

    我需要一个始终保存n迄今为止插入的最大项目 排名不分先后 So if n是 3 我们可以进行以下会话 其中我插入一些数字并且容器的内容发生变化 now insert 1 1 now insert 0 1 0 now insert 4 1 0
  • 寻找 A* 算法的启发式有哪些好方法?

    您有一张方形图块地图 您可以在其中向 8 个方向中的任意方向移动 鉴于您有名为的函数cost tile1 tile2 它告诉您从一个相邻图块移动到另一个图块的成本 您如何找到既可接受又一致的启发式函数 h y goal 给定此设置 寻找启发
  • python 中的端口转发以允许套接字连接

    我使用套接字启动服务器并希望允许客户端连接到它 self sock bind 0 0 0 0 0 0 0 0 0 will allow all connections and port 0 gt os chooses a open port
  • 如何在不传递变量的情况下获取当前异常?

    我正在寻找一种方法来检索当前异常 而不必将其作为变量传递 假设下面的代码 public void MakeItFail try throw new FailException catch Yes I m aware that this sh
  • ng-grid 自动调整列宽

    我正在使用 AngularJS ng grid 并尝试制作它 1 根据列内容自动调整列宽 2 当显示的列较少时 使最后一列宽度自动调整大小以填充空白区域 例如 我有 8 列 每列宽度 100 整个 ng grid 宽度为 800 然后如果我
  • 查找消息的作者

    如果有人写 name arg 我希望我的机器人说消息的作者 你的名字是 arg 我找不到该消息的作者 though client command async def name their name await client say 0 yo
  • Elastic Search 上可以创建的索引数量有限制吗?

    我正在使用 AWS 提供的 Elastic Search 我的网站上以及每次注册时都有一个注册页面 为新用户创建一个新索引 稍后由他的工作组使用 这意味着索引的数量不断增长 现在达到大约 4 5k 我的问题是 索引数量有性能限制吗 为每个新
  • 模板c++的模板?

    我已经成功地创建了一些 preperty 类 其中包含我们期望的所有内容 我的意思是 使用它时 您不需要仅使用来调用函数operator 将完成所有工作 但我想只有一件事如果我们能解决就好了 template
  • 将 javascript 添加到 ASP.NET 文本框控件的 OnBlur 属性

    有没有办法指定一些 JavaScript 在 ASP NET 文本框的 OnBlur 事件上执行 在我看来 如果我向 TextBox 对象添加任何事件处理程序 它们只会导致回发到服务器 而不是执行我想要的操作 基本上 我只想能够在 HTML
  • 如何使用 Jquery 在午夜使 Cookie 过期?

    我这样做了 cookie ultOS i expires 1 但它只会在第二天到期 如何让 cookie 在午夜过期 这会起作用吗 var date new Date var midnight new Date date getFullYe
  • 如何使用 \x1b[2j 清除屏幕?

    我们如何实施clrscr 谷歌搜索我发现 x1b 2j可以用来清屏 但是我们如何使用它呢 标准 C 库不提供清除屏幕的方法 为此 您需要一个依赖于操作系统的库 在 DOS 和 Windows 下 对于在 DOS 或 Windows 控制台中
  • 分发时隐藏swift框架中的源代码

    我创建了一个快速框架来分发给私人客户 这是我第一次创建 iOS 框架 所以我对很多事情都一无所知 我的源代码是否有可能被隐藏 我已经到处搜索 但找不到正确的答案 我不确定我是否解释得很彻底 但为了简化起见 我不希望开发人员能够修改或查看我的
  • ChartJS:数据标签:显示饼图中的百分比值

    我有一个带有四个标签的饼图 var data data 50 55 60 33 labels India China US Canada backgroundColor 4b77a9 5f255f d21243 B27200 borderC
  • CoffeeScript:使用instanceof与Class.constructor.name

    如果我有课 class Haha constructor lolAmount 1 gt alert lolAmount 我想检查一个对象是否属于正确的类 使用它是否总是安全的constructor name haha new Haha un