我可以在 Javascript 中定义自定义运算符重载吗? [复制]

2024-04-19

是否可以在 JavaScript 中的类型实例之间定义自定义运算符?

例如,假设我有一个自定义向量类,是否可以使用

vect1 == vect2

检查是否相等,而底层代码会是这样的?

operator ==(a, b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}

(这当然是废话。)


我同意向量原型上的相等函数是最好的解决方案。请注意,您还可以通过链接构建其他类似中缀的运算符。

function Vector(x, y, z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

Vector.prototype.add = function (v2) {
    var v = new Vector(this.x + v2.x,
                       this.y + v2.y,
                       this.z + v2.z);
    return v;
}

Vector.prototype.equal = function (v2) {
    return this.x == v2.x && this.y == v2.y && this.z == v2.z;
}

你可以看到在线样本在这里 http://startpad.googlecode.com/hg/labs/js/misc/chaining.html.

更新:这是创建一个更广泛的示例工厂功能 http://wiki.pageforest.com/#js-patterns/factory-function支持链接。

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

我可以在 Javascript 中定义自定义运算符重载吗? [复制] 的相关文章

  • 如何获取 AngularJS 指令中元素的 x 和 y 位置

    在指令的链接函数部分中 我们可以访问element目的 我想确定是否element对象位于当前视口内 如果可用 我目前有以下内容 link function scope element attrs controller var page a
  • 如何从模板脚本访问 AngularJS 变量

    我的控制器 scope totals totals 我的模板 按 html 注入的预期工作 totals 但我需要的是访问变量totals在模板的脚本中 如下所示 我试过了 scope totals totals totals 等 均无济于
  • JS专用鼠标按键

    我的鼠标侧面有两个按钮 其默认行为是 后退 和 前进 我想知道的是是否可以在 JavaScript 中检测这些鼠标按钮的点击 或者这些按钮是否是类似于键盘的 播放 音量调高 和 无线开 关 的 特殊 按钮纽扣 我不知道任何特定的鼠标事件 但
  • AJAX 与 Facebook 身份验证

    我已经构建了一个完全基于 AJAX 的应用程序 它没有页面刷新并使用 AJAX 加载所有内容 现在我想以一种不会重定向用户进行页面刷新的方式嵌入 Facebook 身份验证 目前 Facebook 的工作方式如下 用户通过单击 Facebo
  • 如何在 Angular 2 中禁用浏览器后退按钮

    我正在使用 Angular 2 开发一个网站 有没有办法使用 Angular 2 禁用或触发浏览器后退按钮 Thanks 不确定这是否已经排序 但仍然发布答案 以供将来参考 为了解决这个问题 您基本上需要在应用程序组件中添加一个侦听器并设置
  • 尝试旋转和变换 SVG 路径 - 我需要三角学计算吗?

    我正在尝试使用鼠标 SVG 路径进行操作 该路径代表电子电阻器的符号 该符号需要使用 引线 末端进行操作 如果您可以想象真实的电阻器 因此 我试图实现拖动第一个点周围 第二个点仍然存在 并且当在新坐标上拖动第一个点时 路径的所有点都按比例表
  • 使用 Ctrl+v 或右键单击 -> 粘贴检测粘贴的文本

    使用 JavaScript 如何检测用户将哪些文本粘贴到文本区域 您可以使用粘贴事件来检测大多数浏览器中的粘贴 尤其是 Firefox 2 当您处理粘贴事件时 记录当前选择 然后设置一个简短的计时器 在粘贴完成后调用一个函数 然后 该函数可
  • 如何在 vue 组件的树视图中激活子类别?

    我有两个 vue 组件 我的第一个组件 父组件 如下所示
  • 将 javascript 变量作为 onsubmit href 链接传递到表单/输入字段

    id 喜欢有一个输入框 用户可以在其中输入搜索词 该搜索词可能会传递给一个 javascript 函数 然后该函数将一些 url 段与搜索词组合起来 创建一个完整的 url 到目前为止 它在没有表单的情况下工作正常 但我想向其中添加一个表单
  • Javascript:如何简化具有多个 OR 条件的 if 语句?

    很抱歉 如果我在写这篇文章时犯了错误 我是新来的 不知道这是如何工作的 希望我能尽快学会 我也是 JavaScript 新手 所以问题是 我有这个代码 elements js文件 我无法让它工作 放这个有用吗 if codePrompt c
  • onchange 选择框

    假设我们有 2 个不同的选择框 具有相同数量的选项
  • 强制 Javascript 编码风格的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要自动检查不同人编写的javascript源代码的风格 你知道有什么好的工具可以做到这一点吗 与 emacs 集成将是一个优势 先感谢
  • 如何将对象传递给 onclick 事件[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 循环内的事件处理程序 需要闭包吗 https stackoverflow com questions 341723 event handlers inside a javascr
  • jsx转js后dom未定义错误

    我创建了一个 jsx 文件 如下所示 jsx dom function use strict define jquery react react dom function React ReactDOM var AppView React c
  • Cordova/Phonegap 通过 JavaScript 在应用程序浏览器中打印

    我想从我正在开发的 iPad 应用程序打印一页 或某些页面 应用程序启动时所做的第一件事是通过以下代码加载外部网站 window location https 我现在想从这个外部网站打印一些东西 在 iPad 上的 Safari 中效果很好
  • 可选链接不起作用:无法读取未定义的属性“0”[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 为什么可选链在这里不起作用 html userItemModel item priceList 0 sellerUrl
  • Html页面在底部加载

    我需要一个 HTML 页面在页面加载时自动向下滚动 所以基本上加载在底部 可以使用JavaScipt吗 请您帮助我或引导我走向正确的方向 感谢所有帮助 谢谢 尝试这个 window scroll 0 document documentEle
  • rbind 命名向量到不同长度的矩阵

    我正在尝试将命名向量绑定到矩阵上 命名向量的长度与矩阵不同 gt m lt matrix data c 1 2 3 nrow 1 ncol 3 dimnames list c c column 1 column 2 column 3 gt
  • 有没有办法在不托管网站的情况下呈现网站并共享它?

    我正在为一个项目创建一个 repl it 网站 问题是我的老师要求不要发布该网站 这意味着我无法使用 repl it 来托管它 我想知道是否有任何方法可以制作可以通过 Google Chrome 查看的网站副本 而无需连接到主机 我有所有的
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1

随机推荐

  • php 中的 SVG 到 PNG 图像转换

    我想将 SVG 图像转换为具有透明背景的 PNG 文件 我使用下面的代码在 php 中使用 imagick 对其进行转换 但它给出了黑色背景的图像 image new imagick set transparent background i
  • 在 O(n) 中获取作为唯一给定索引的函数的排列

    我想要一个函数get permutation给定一个列表l和一个索引i 返回一个排列l这样排列对于所有人来说都是唯一的i大于0并低于n where n len l I e get permutation l i get permutatio
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 标准化浮点数 f 之后(之前)的下一个标准化浮点数是什么?

    给定一个标准化浮点数 f 下一个是什么归一化f 之后 之前的浮点数 通过一些调整 提取尾数和指数 我有 next normalized double if mantissa is not all ones maximally denorma
  • 如何快速过滤 Realm 中为当前日期创建的事件?

    如何快速过滤 Realm 中为当前日期创建的事件 我尝试了类似下面的方法 但是这是错误的 let dtSource datasource filter Create NSDate count Update 获取将我的日期创建为字符串的过滤器
  • Python json内存膨胀

    import json import time from itertools import count def keygen size for i in count 1 s str i yield 0 size len s str s de
  • 设置子视图以适合系统窗口

    我正在设置一个简单的视图 其中仅包含一个空的RelativeLayout
  • 如何启动第二个 Java 进程?

    如何启动第二个独立于平台的 Java 进程 理想情况下 它应该与当前运行的 Java 版本相同 有什么有用的系统属性吗 您可以使用java home系统属性来查找当前的 JVM String jvm new java io File new
  • 如何以编程方式获取 iOS 状态栏高度

    我知道目前 iPhone iPad 顶部的状态栏 包含时间 电池和网络连接 对于非视网膜屏幕为 20 像素 对于视网膜屏幕为 40 像素 但为了未来证明我的应用程序 我希望无需硬编码值即可确定这一点 是否可以通过编程计算出状态栏的高度 UI
  • Q_PROPERTY NOTIFY 信号及其参数

    我有写 propertyChanged 的习惯signals 带参数 这样接收端就不需要调用Q PROPERTY s READ明确地发挥作用 我这样做是出于清晰的考虑 并且假设在 QML 数据绑定情况下 不需要对 getter 进行 昂贵
  • 如何在 TypeScript 中创建本地模块

    我已经在文件夹中创建了src modules my module 其中有package json并定义了导出我们需要的所有内容的主文件 我现在可以从中导入import A from modules my module 我想将语法更改为imp
  • 如何通过sql查询在数据库中只保存时间而不保存日期

    此查询正在保存完整的日期和时间 但我只想在数据库中保存时间而不是日期 有什么查询可以做到这一点吗 update table set current time now 您的列必须设置为 DATETIME 或 TIMESTAMP 如果您使用 T
  • 使用 Google Apps 脚本抓取动态网页

    我想使用其他网站读取项目的一些数据谷歌脚本 https script google com 有问题的页面是Dyanmic 它们包含在初始页面加载后通过 JavaScript 调用服务器加载的内容 通常 对于一些静态内容 这工作得很好 但我对
  • 无法将 CSS 应用于 html 字符串

    我正在尝试将 evoPDF 集成到我的 asp net 应用程序上 我通过 ajax 从我的 html 文件 onclick 发送部分 html 直到这一部分一切正常 现在 当我从 EvoPdf API 调用这些方法时 1 GetPdfBy
  • 如何计算连续行的时间差

    原始数据如下所示 我想按访问者和时间对其进行排序 以计算行中的时间差 然后将其保存到新文件中 visitor v time payment items 1 Jack 1 2 2018 16 07 35 3 2 Jack 1 2 2018 1
  • 在 C++ 中使用 realloc

    std realloc如果 malloc 的内存包含非 Pod 类型 则在 C 中是危险的 看来only问题是std realloc如果无法在原位增加内存 则不会调用类型析构函数 一个简单的解决方法是try realloc功能 如果新内存无
  • 如何在java中获取大尺寸数组

    我是java新手 我想在java中获取大输入大小的数组 但给了我一些运行时错误 NZEC 我不知道它 我也对此错误做了一些研究 但没有找到与我的问题相关的任何内容 long n sc nextLong n can be upto 10 9
  • YouTube API 身份验证 - Iphone

    我正在尝试使用 youtube api 的示例代码上传视频 当我按下上传按钮时 进度条完成其过程 但是一旦到达终点我就会收到错误 错误描述如下 YouTubeTest 2149 f803 错误 错误 Domain com google GD
  • 防止 TestNg 在并行测试之间共享数据

    Goal 并行独立运行 2 个类 其中每个测试将方法名称存储到稍后可以在测试中访问的变量中 Issue 当测试并行运行时 它们开始在彼此之间共享数据 从而破坏测试 如果您看到控制台输出 则这是错误的 INFO Name of Test fr
  • 我可以在 Javascript 中定义自定义运算符重载吗? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中的类型实例之间定义自定义运算符 例如 假设我有一个自定义向量类 是否可以使用 vect1 vect2 检查是否相等 而底层代码会是这样的 operator a b return