Javascript:向函数原型添加方法

2024-03-20

有没有更短的写法:

var controller = function(){ 
    /*--- constructor ---*/
}; 

controller.prototype.function1 = function(){ 
    //Prototype method1
}

controller.prototype.function2 = function(){ 
    //Prototype method2
}

controller.prototype.function3 = function(){ 
    //Prototype method3
} 

return controller

我正在使用 require.js。我想知道是否可以避免controller.prototype代码重复。


具有辅助功能

尽管这比给出的答案更长,但如果您必须在多个地方执行此操作,则可能有助于定义辅助方法:

function protomix(constructor, mix){
    for(var i in mix)
      if(mix.hasOwnProperty(i))
          constructor.prototype[i]=mix[i];
}

var controller = function(){
 //constructor
};

protomix(controller, {

   function1 :  function(){ 
       //Prototype method1
   },

   function2:  function(){ 
       //Prototype method2
   },

   function3 : function(){ 
    //Prototype method3
   } 
});

return controller;

使用 jQuery 的扩展方法

我想我应该提一下jQuery的扩展方法 http://api.jquery.com/jquery.extend/因为它是在评论中提出的,并且通常比答案第一部分中定义的小帮助器方法具有更多功能:

var controller = function(){ /* ctor */};
return $.extend(controller.prototype,{

   function1 :  function(){ 
       //Prototype method1
   },

   function2:  function(){ 
       //Prototype method2
   },

   function3 : function(){ 
    //Prototype method3
   } 
});

其他图书馆

其他库也内置了类似的功能,例如下划线的扩展方法 http://underscorejs.org/#extend or Lo-Dash 的分配方法 http://lodash.com/docs#assign

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

Javascript:向函数原型添加方法 的相关文章

  • 如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

    如何删除除以下内容之外的所有内容 字符串中的字母 数字 空格 感叹号 问号 该方法支持国际语言 UTF 8 非常重要 您可以使用正则表达式 myString replace w s g 这将替换除单词字符 空格 感叹号或问题之外的所有内容
  • 添加 Javascript 按钮来更改 iframe 的内容

    我正在尝试创建此页面 其中有一个 Iframe 并且我想添加一个按钮来显示 iframe 中的下一页 以及一个按钮来显示 iframe 中的上一页 我总共有 4 个页面要在名为 1 html 2 html 3 html 4 html 的 i
  • onclick 调用 hide-div 函数不起作用

    我一直在与这段简单的代码作斗争 我正在尝试使用
  • Javascript:将 JSON 字符串转换为 ES6 映射或其他形式以保留键的顺序

    ES6 或后续版本 Javascript 或 TypeScript 中是否有原生 内置 方法将 JSON 字符串转换为 ES6 映射 或者可以选择要实现的自制解析器 目标是保留 JSON 字符串编码对象的键顺序 Note 我故意不使用 解析
  • 我是否需要关心异步 Javascript 的竞争条件?

    假设我加载了一些我知道在将来某个时候会调用的 Flash 影片window flashReady并将设置window flashReadyTriggered true 现在我有一个代码块 我想在闪存准备好时执行它 我希望它立即执行 如果wi
  • 如何使对象“a == b”的比较成立? [复制]

    这个问题在这里已经有答案了 这是面试前 JavaScript 在线测试的问题之一 function F var a new F var b new F Q 如何进行比较a b to be true e g console log a b t
  • 在承诺中运行同步函数

    我是 JS 和异步操作的新手 在使用express的nodeJS路由器中 我使用mongoose从mongo聚合了一些数据 该数据是每隔 15 分钟从不同站点收集的天气数据 我使用猫鼬聚合管道处理数据 以获取每小时数据并按每个站点进行分组
  • 将 Javascript 正则表达式转换为 PHP

    我知道这个问题已经被问了大约十几次 但是从技术上讲 这个问题并不是一个骗局 如果您愿意 请检查其他问题 基本上 我有一个 Javascript 正则表达式来检查用于前端验证的电子邮件地址 并且我使用 CodeIgniter 在后端进行双重检
  • CSS - 制作“步进”文本的好方法?

    有没有一种好的方法可以实现以下目标 而无需任何额外的标记 不过使用 JavaScript 就很好了 任何想法 Thanks Edit 我的标记将是这样的 div style width 400px p Text text text Text
  • 我无法在我的反应本机上使用加载的应用程序。它不会正常工作

    我不断收到此错误 错误截图 https i stack imgur com 88KPa png 这是我用来导入自定义谷歌字体的代码 import React useState from react import Home from scre
  • 每次用户在地址栏中按 Enter 时,Firefox 插件都会执行某些操作

    我正在尝试编写一个扩展程序 用于监视每次有人在使用地址栏时按下回车键时的情况 步骤将类似于 用户在地址栏中输入一堆文本并按 Enter 键 我的插件启动并接收用户输入的内容 然后我的插件决定如何处理用户输入的字符串 我通过使用在步骤 2 中
  • 更改模板标签 <# {% {{ 等后,John Resig 的微模板出现语法错误

    我在使用 John Resig 的 Micro 模板时遇到了一些麻烦 谁能帮我解释为什么它不起作用 这是模板 以及发动机的改装部分 str replace r t n g split join t replace gt t g 1 r re
  • 正则表达式没有按预期工作?

    我有这个正则表达式 new RegExp a z 0 9 ig 我正在测试一个不应该工作的字符串 vc 但它确实通过了测试 而且它不应该 new RegExp a z 0 9 ig test vc true 但如果我删除其中一个 or or
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia
  • 如何用方向键移动div

    我想使用 jQuery 用箭头键移动 div 所以右 左 下 上 找到了我想要完成的演示here http atomicrobotdesign com blog htmlcss move objects around the canvas
  • 无法使用 jQuery 添加两个小数

    我试图将两个小数值相加 但返回的总和是纯整数 怎么了 我找不到它 欢迎任何帮助 jQuery delivery method ship select change function var cost jQuery this val jQue
  • Cypress.io 如何处理异步代码

    我正在将旧的水豚测试转移到 cypress io 因为我们的应用程序正在采用 SPA 方式 在我们的案例中 我们有超过 2000 个测试 涵盖了很多功能 因此 测试功能的常见模式是让用户创建并发布报价 一开始我写了 cypress 浏览页面
  • 更改哈希值而不触发 hashchange 事件

    我使用哈希来动态加载内容 为了使后退按钮正常工作 我正在捕获哈希更改 然而 有时我需要更改哈希值而不触发哈希更改函数 例如 当页面重定向到服务器端时 我需要在内容返回后更新哈希值 我想出的最佳解决方案是取消绑定 hashchange 事件
  • jQuery 倒计时插件 - 只显示非零周期

    我正在使用 jQuery 倒计时插件编写倒计时 我只希望它显示活动 非零 周期 例如代替 剩余时间 0 天 0 小时 13 分 20 秒 它应该只显示 13 分 20 秒 我的代码是 countdown countdown expiryUr
  • 仅使用 javascript 获取网站的正文元素

    我想检索以下网站的正文内容http sports espn go com nhl bottomline scores nhl s left1 http sports espn go com nhl bottomline scores nhl

随机推荐

  • C++中对象的动态初始化是什么?

    C 中对象的动态初始化是什么 请用一个简单的例子来解释 动态初始化是指编译时初始化值未知的初始化 它在运行时计算以初始化变量 Example int factorial int n if n lt 0 return 1 indicates
  • Numpy - ImportError:无法导入名称 _distributor_init

    我一直在使用matplotlib from python和spyder ide为出版物创建一些数据 它总是有效 但即使在使用 Linux 多年之后 整个事情对我来说仍然是一个黑匣子 昨天我尝试运行另一个应用程序 它抱怨说numpy and
  • 空对象引用上的“boolean java.lang.Class.isInterface()”

    我在 Android 13 上遇到此崩溃 代码如下 Caused by java lang NullPointerException Attempt to invoke virtual method boolean java lang Cl
  • InvalidArgument=值“0”对于“SelectedIndex”无效

    我正在 NET 4 0 中开发 Windows 窗体应用程序 当我将数据绑定到BindingSource 其中一个ComboBox已绑定 我得到以下异常 注意 只有当我让调试器在抛出异常 未处理或已处理 时停止时 我才会得到它 因此 异常在
  • 旋转时碎片不会被破坏

    我有一个以编程方式添加的片段 然而 我发现在旋转之后 会创建一个新片段 但旧片段仍然存在 尽管没有显示 我假设片段会随着旋转活动而被销毁 但这里的情况并非如此 是什么导致我的片段被保留 未被破坏 请注意 我没有设置 setRetainIns
  • 从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的强制转换无效

    Type t typeof int will get this dynamically object val 5 will get this dynamically object nVal Convert ChangeType val t
  • 如何一次刷新Postgresql 9.3中的所有物化视图?

    我正在将一堆数据加载到 PostgresQL 9 3 数据库中 然后我想刷新依赖于更新表的所有物化视图 有没有一种方法可以自动执行此操作 而不是逐一浏览每个视图并刷新它们 我知道 Oracle 可以很容易地做到这一点 但在梳理 Postgr
  • 使用单选按钮组打破键盘焦点

    这看起来很简单 但这对我来说有点令人头疼 给出以下 有效的 xhtml 过渡 代码
  • Angular CLI 将 font-awesome 字体文件输出到 dist root

    你一定要吗eject你的 angular cli 并覆盖 webpack 配置以放置font awesome字体放入 asset fonts 文件夹中 我有这个 angular cli 并且我以这种方式将 font awesome 包含在我
  • Python 特征向量

    eigenvalues eigenvectors linalg eig K 我怎样才能只打印特征向量len K 所以如果有K 2x2矩阵 我得到4个特征向量 如果有的话我怎样才能只打印其中2个len K 2 非常感谢 您将得到两个长度为 2
  • LLVM环境变量在哪里或者LLVM环境是如何配置的?

    作为上下文 我有一台 Mac 我在工作中使用它使用各种自定义构建脚本进行开发 我现在尝试使用同一台机器来玩一些个人 Xcode 项目 第一步 我在 Xcode 11 3 1 中创建一个新的 Single View App 项目 并尝试在我连
  • C# 中的内存使用情况

    我有一个在 C 中使用线程的程序 有没有办法以编程方式了解应用程序的内存使用情况 我想将线程的产生限制为 10 MB 内存 我该怎么做 如果您想要整个正在运行的进程的内存而不是每个线程的内存 那么 get the current proce
  • 用于出版质量图的 Python Pylab pcolor 选项

    我正在尝试使用 DFT 离散傅立叶变换 图pcolor在Python中 我之前一直使用 Mathematica 8 0 来执行此操作 但我发现 Mathematica 8 0 中的颜色条与我尝试表示的数据具有不良的一对一相关性 例如 这是我
  • Java:使用多个 DatagramSocket 接收 UDP 数据报包

    我正在尝试实现一种将 UDP 数据包发送到多个接收者的方法 我认为这应该是可行的设置setReuseAddress true 在接收 DatagramSocket 实例上 我的问题是 在某些情况下 我需要限制与本地计算机的通信 因此限制本地
  • 如何将RGB值转换为色温?

    如何获取以 RGB 值 例如 0 255 之间的三个坐标 表示的颜色并从中生成一个色温 https en wikipedia org wiki Color temperature在开尔文 或泥潭 I see 这个问题 https stack
  • for 循环:C++ 和 python

    我了解如何使用 for 循环 for x 0 x lt 5 x some code 在 C 中 但是 for 循环怎么样 for x in y 至少存在于 python 中 最接近的等效项是基于范围的 for 循环 例如 auto y 0
  • DreamHost 上的 Rails 3?

    我想在 dreamhost 上部署一个小型 Rails 3 应用程序 仅用于测试目的 没什么大不了的 我想知道是否有人已经这样做了 请选择以下选项之一 我做到了 非常简单 方法如下 虽然我没有尝试过 但应该很容易 方法如下 这很复杂 但这应
  • 使用具有根 UITabBarController 的故事板将 ManagedObjectContext 传递给视图控制器

    使用故事板 您无法轻松访问 appDelegate 中的第一个视图控制器 尽管一旦您这样做了prepareForSegue可以轻松地将 ManagedObjectContext 传递到导航堆栈中 我决定为每个需要核心数据访问的视图控制器 或
  • 更新到 OSX 10.9.5 后如何更改 Java 应用程序的签名方式

    刚刚从 OSX 10 9 4 更新到 10 9 5 看起来我必须更改更新后签署 Java 应用程序的方式 因为我现在在签名后得到此输出 export CODESIGN ALLOCATE Applications Xcode app Cont
  • Javascript:向函数原型添加方法

    有没有更短的写法 var controller function constructor controller prototype function1 function Prototype method1 controller protot