对 JavaScript 原生类型进行原型设计,感到沮丧吗?

2024-02-16

在 JavaScript 原生类型(如数组、字符串、数字等)中构建附加功能原型是一个坏主意吗?

我认为拥有像 myArr.pop() 等功能会很棒,但是如果有一天它成为 ECMAScript x 的一部分,并且与我的实现不同,那么它可能会破坏整个软件怎么办?


Prototype 是一个广泛扩展原生 Javascript 类型和 DOM 类的库,并且非常好地展示了扩展 Javascript 原生类型的好处、坏处和丑陋之处。

好处:您可以获得看起来自然的 Javascript 代码。

坏处:您忘记了您实际上正在使用 Prototype - 当您切换到不使用 Prototype 的项目时会产生混乱。 (为什么我不能……哦,对了,那是原型功能。)

丑陋之处:如果由于库、浏览器或规范冲突而导致方法定义(契约或签名不同的两种方法)发生冲突,您可能必须修改客户端代码以保持兼容性。这使得在一个已经受到它们困扰的世界中需要考虑更多的兼容性问题。

为了兼容性和保持我自己的想法清晰,我个人避免扩展原生或 DOM javascript 类型,并且更喜欢侵入性较小的库而不是 Prototype。

但是,如果您对这些缺点感到放心,请不要让我阻止您。

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

对 JavaScript 原生类型进行原型设计,感到沮丧吗? 的相关文章

随机推荐

  • 如何使 haml 中的文本和变量出现在同一行?

    我有这段代码 我希望它在同一行上读作 Volunteers Needed 10 event numberofvolunteers value 我怎样才能在不使用CSS的情况下做到这一点 我还没有找到解决这个问题的具体帖子 td Volunt
  • 计算球体的顶点法线

    我想知道如何获取存储在缓冲区中的每个球体的顶点 并分别计算每个球体的法线 可以在 OpenGL 中实现吗 OpenGL 通常用于渲染网格 而不是计算它们 法线是网格数据的一部分 提供法线通常是网格体构建者的责任 对于球体来说 法线的计算非常
  • vswprintf 在 Mac OS X 下对于某些 unicode 代码点失败

    我收到莫名其妙的失败 返回值 1 vswprintf使用GCC和Mac OS X 在Mac OS X 10 6和10 8下使用gcc 4 0和4 2 1进行测试 Linux下的GCC是not做作的 Visual Studio 也是not做作
  • 在彩色背景中渲染透明文本

    假设我有两个 UIView View1 边界 0 0 20 20 背景颜色 一些带有渐变或其他内容的复杂背景 View2 帧 0 0 20 20 背景颜色 蓝色 是 View1 的子视图并完全覆盖它 接下来 我想在 View2 上绘制一些文
  • 如何并行处理MSMQ消息

    我正在编写一个 Windows 服务来使用 MSMQ 消息 该服务将存在高活动期 80k 消息快速传入 和长时间不活动期 可能数天没有新消息 处理消息非常受网络限制 因此我从并行性中获得了很大的好处 但在不活动期间 我不想占用一堆线程来等待
  • REST API,具有从服务器到客户端的主动推送通知

    问题描述 我正在开发一个 Xamarin 应用程序 该应用程序使用用 Python Flask 编写的 REST API Xamarin 应用程序提供虚拟购物清单 用户可以在其中协作购买共享清单上的商品 为了改善用户体验 我希望能够主动通知
  • FolderClosedException:* BYE JavaMail 异常:java.io.IOException:连接被服务器删除?

    我正在使用 javamail 1 5 5 我想监听 GMail 邮箱中的新邮件 我有一个 MessageCountListener 的实现 在它的 messagesAdded 方法上 最后我这样做 try process new messa
  • 适用于 Android 的滑动切换

    任何人都知道 Android 的滑动切换的任何开源实现 默认的 android 切换 切换按钮 http developer android com reference android widget ToggleButton html 不漂
  • Shiro/Stormpath 通过 REST

    我是新来的士郎 我们正在尝试将 Shiro 与 Stormpath 一起使用 我一直在尝试剖析这些例子 以找出我想做的解决方案 但到目前为止我还没有成功 目前 我只是尝试创建 REST 服务来执行我想要的操作 稍后我将绑定一个真正的客户端
  • 在 fork() 中,哪个将首先运行,父进程还是子进程?

    当以下代码运行时 我知道父级和子级都会运行在平行下调用 fork 后立即执行 include
  • Angular Js 路由 Google Chrome 问题

    使用下面提到的 Code1 在 Angular Js 中进行基本路由并获得 XMLHttpRequest 无法加载跨源请求仅支持以下协议方案 http data chrome extension https chrome extension
  • 在logstash中使用grok解析多行JSON

    我有一个 JSON 格式 SOURCE Source A Model ModelABC Qty 3 我正在尝试使用 Logstash 解析此 JSON 基本上我希望logstash 输出是一个键 值对列表 我可以使用kibana 进行分析
  • Embarcadero WindowHandleToPlatform C++ 的示例

    我需要一个用于 C 构建器的 WindowHandleToPlatform 示例 我想使用句柄对表单执行 bitblt 和其他功能 我可以使用 VCL 来做到这一点并且效果很好 认为 WindowHandleToPlatform 是 fir
  • 为什么我的音频 AVCaptureConnection 对于最高分辨率格式不起作用?

    我正在开发一个 iOS 项目 该项目使用 AVAssetWriter 和 AVAssetWriterInput 将音频和视频录制到文件中 当视频分辨率限制为 720x1280 时 一切似乎都运行良好 我现在尝试利用 AVCaptureDev
  • 替换 Android 内核中的触摸屏驱动程序

    我正在为我的定制板调整姜饼内核 我正在尝试更换使用片上 ADC 控制器 三星的 S5PV210 处理器 的电阻式触摸屏 在我的设计中 我需要一个由 eGalaxyTouch 驱动程序支持的电容式控制器 它已连接至 USB 可以从 make
  • 帮助简化 WordPress 中的 if while 列表循环

    可以很好地理解上面的代码 1 我可以删除if和while条件吗 使用直接地 2 我感觉if have posts 与while have posts 是裁员吗 1 呼叫the post没有循环只会让您显示单个帖子 这在单帖子页面上可能是理想
  • 提高 8086 二进制 -> 格雷码的效率

    我是汇编初学者 这是我设计的代码 用于从二进制转换为灰度 并以十六进制打印生成的位模式 mov al a mov bl al shr bl 1 xor al bl 虽然程序可以运行 但我想了解其他更简单的方法来提高效率 我尝试了很多其他方法
  • NullPointerException 使用链表时出错

    我刚刚完成了这个程序的工作并编译了它 但它在用户输入后中断并给了我这个 请在键盘上输入0个或多个值 12 4 3 2 1 Exception in thread main java lang NullPointerException at
  • 实现与 URLSession 发布者和合并的重新连接

    我想知道是否有一种方法可以实现重连机制与新的Apple框架结合并使用URLSession发布者 试图在 WWDC 2019 中找到一些例子 尝试玩waitsForConnectivity运气不好 它甚至没有在自定义会话中调用委托 tried
  • 对 JavaScript 原生类型进行原型设计,感到沮丧吗?

    在 JavaScript 原生类型 如数组 字符串 数字等 中构建附加功能原型是一个坏主意吗 我认为拥有像 myArr pop 等功能会很棒 但是如果有一天它成为 ECMAScript x 的一部分 并且与我的实现不同 那么它可能会破坏整个