JavaScript 对象属性可以引用同一对象的另一个属性吗? [复制]

2023-12-08

我最近尝试创建一个像这样的对象:

var carousel = {
      $slider: $('#carousel1 .slider'),
      panes: carousel.$slider.children().length
    };

我的目的是通过缓存结果来提高 jQuery 选择器的性能$('#carousel1 .slider')在对象属性中,并保持代码简洁且相对干燥。

然而,这并没有奏效。当代码执行时,它在尝试解析值时抛出异常panes,抱怨说carousel未定义。

这是有道理的,因为我假设carousel直到赋值语句完全执行后才完全声明。但是,我想避免诉诸于此:

var carousel = {};
carousel.$slider = $('#carousel1 .slider');
carousel.panes = carousel.$slider.children().length;

这并不算更糟,但是carouselobject 将具有更多依赖于其他属性值的属性,因此很快就会变得冗长。

我尝试使用this,但无济于事。我很可能没有正确使用它,或者无论如何这可能不是一个有效的方法。

有没有办法让一个对象的属性在该对象仍在声明时引用同一对象的其他属性?


根据 Matthew Flaschen 和 casablanca 的回答(谢谢大家!),我认为这些是我根据每种方法最终得到的实际代码的版本:

// Matthew Flaschen

var carousel = new (function() {
  this.$carousel = $('.carousel');
  this.$carousel_window = this.$carousel.find('.window');
  this.$carousel_slider = this.$carousel.find('.slider');
  this.$first_pane = this.$carousel.find('.slider').children(':first-child');
  this.panes = this.$carousel_slider.children().length;
  this.pane_gap = this.$first_pane.css('margin-right');
})();

and

// casablanca

var $carousel = $('.carousel'),
    $carousel_slider = $carousel.find('.slider'),
    $first_pane: $carousel.find('.slider').children(':first-child');

var properties = {
  $carousel_window: $carousel.find('.window'),
  panes: $carousel_slider.children().length,
  pane_gap: $first_pane.css('margin-right')
};

properties.$carousel = $carousel;
properties.$carousel_slider = $carousel_slider;
properties.$first_pane = $first_pane;

假设这些都是正确的(我没有测试过它们),这是一个艰难的决定。我想我稍微喜欢 Matthew Flaschen 的方法,因为代码包含在一个更类似于对象声明的结构中。最终也只创建了一个变量。然而,有很多this在那里,这似乎是重复的——尽管这可能只是要付出的代价。


不适用于对象文字 (this在构造文字期间具有与之前相同的值)。但你可以做

var carousel = new (function()
{
      this.$slider =  $('#carousel1 .slider');
      this.panes = this.$slider.children().length;
})();

这使用从匿名函数构造函数创建的对象。

注意$slider and panes是公开的,因此可以通过以下方式访问carousel.$slider, etc.

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

JavaScript 对象属性可以引用同一对象的另一个属性吗? [复制] 的相关文章

  • 实现快速 Javascript 搜索?

    基本上 我有一个带有文本框的页面和 ul 列在其下面 这 ul 由用户的朋友列表填充 用户开始在文本框中输入朋友的名字 例如按 r 我想立即更新 ul 每次按键仅显示名字以 R 开头的朋友 例如 Richard Redmond Raheem
  • 带有闭包的 JavaScript 性能

    var name function n var digits one two three four return digits n var namenew function digits one two three four return
  • 如何将事件对象传递给 JavaScript 中的函数?

  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用
  • 将 Repeater Container.ItemIndex 传递给 Javascript 函数

    在 C Asp Net 中 我需要将中继器出现索引传递到 Javascript 函数中OnClientClick从 ASP 按钮按下 这是我的代码
  • 将 FireBug 用于带有框架的网站

    我下载了 Firebug 并尝试使用它来调试使用框架的站点的 JS 我的理解是 当我进入 Firebug 中的 脚本 选项卡时 我会看到 aspx 上的 JS 函数以及包含的任何文件中的 JS 并且我将能够设置断点 然而 我在这个网站上看到
  • 无法在 IE 中的选择选项上使用 onmouseover 事件

    更新的代码 function getElements var x document getElementsByTagName option var el document getElementById selectDept el onmou
  • 三.js环境光意想不到的效果

    在下面的代码中 我渲染了一些立方体并使用点光源和环境光照亮它们 然而 当设置为 0xffffff 时 AmbientLight 会将侧面的颜色更改为白色 无论其指定的颜色如何 奇怪的是 点光源按预期工作 我怎样才能使环境光表现得像点光 因为
  • Chrome JavaScript 日期构造函数获取 1884 年之前的日期似乎是错误的

    如果我将 1 1 1753 午夜 的 unix 毫秒时间戳值 6847786800000 传递给 Chrome 中的 JavaScript Date 构造函数 则 Chrome 给出的日期看起来非常奇怪 当我使用带有七个参数的 Date 构
  • 将字符串(是一个函数)转换回 Javascript 中的函数

    我在下面将此函数作为字符串 我如何将其转换回函数 我正在从 JQuery 事件中提取事件处理程序 我想将它们存储为字符串 然后将它们转换回来 因为它们将保存在 mySQL 中 function if GActiveClick return
  • 从 html5

    我正在寻找一种方法来根据用户代理字符串将控件属性添加到视频标签 我不希望在 iPad 和 Android 之外的任何浏览器或设备上出现控件属性 所以我认为用户代理是最好的识别方法 因为 ipad 和 android 一词出现在各自的 UA
  • 创建 html 结构,每个 li 中仅允许 3 个 div 元素。在 React + underscore.js 中

    这是以下内容的位副本如何创建每个 li 中仅允许 3 个 div 元素的 html 结构 在 React underscore js 中 https stackoverflow com questions 38008023 how to c
  • Angularjs - 将 True/False 显示为 Yes/No

    有没有一种简单的方法可以将真 假值显示为是 否 我正在从数据库检索包含以下内容的 JSON 对象 对象 WithCertification true 这是 HTML 有认证 elem WithCertification 正在显示这个 认证真
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • JavaScript 中的最短路径

    几周来我一直在寻找一种在 JavaScript 中计算最短路径的方法 我一直在玩书数据结构和算法作者 格罗纳 Groner 名字恰如其分 https github com loiane javascript datastructs algo
  • 如何显示 GroupList 的 FormArray?

    我正在尝试制作一个交互式表单 在每一行上列出一个项目以及一个删除按钮 在我的示例中称为 verwijderen 这些项目是从数据库中检索的 并且每个项目都实例化为名为的自定义对象LaborPeriod 然后这些对象被转化为FormGroup
  • Babel/RequireJS + typeof“RangeError:超出最大调用堆栈大小”

    我有一个非常基本的 JS 错误 我很羞愧无法解决它 我正在使用 ES6 和 Babel 进行开发 并且正在做一些实验 请注意 我在 Babel 中使用了这些参数 presets es2015 plugins transform es2015
  • 错误:模块“html”不提供视图引擎(Express)

    我正在尝试设置一个简单的路由应用程序 但在渲染页面时不断遇到错误 Error Module html does not provide a view engine 奇怪的是我已经在 app js 文件中指定了视图引擎 但仍然收到错误 app
  • JavaScript 中“键”的类型是什么?

    当我失去焦点并开始思考一个愚蠢的问题时 我遇到了这样的时刻 var a b value b 的类型是什么 我的意思不是 值 的类型 而是标记为 b 的实际键 背景 当我必须创建一个字符串键时 我开始想知道这一点 var a b value

随机推荐

  • 如何在 Swift 中创建二维数组?

    你好 我是 Swift 新手 我正在尝试将经度和纬度以及地名从地图的坐标对象保存到多维数组 即 谁能帮我如何动态创建这些 var pinArray 0 Lat 51 130231 var pinArray 0 Lon 0 189201 va
  • 通过 BLE 传输大数据块的最佳方法

    我是 BLE 的新手 希望您能够指出我正确的实施方法 我正在开发一个应用程序 其中外围 电池供电 设备不断聚合传感器读数 在移动端应用程序上会有一个 同步 按钮 按下按钮后 我想将外围设备中积累的所有传感器读数传输到移动应用程序 同步之间的
  • 具有 X.509 证书的 Spring Security

    我正在慢慢地疯狂尝试配置 Spring Security 3 0 0 以保护应用程序 我已将服务器 码头 配置为需要客户端身份验证 使用智能卡 但是 我似乎无法正确获取 applicationContext security xml 和 U
  • new Date("YYYY/MM") 不适用于 IE 11

    在我的项目中 我使用下面的js代码来获取日期 仅输入日期年和月 var current time new Date current 当前数据是这样的 2017 04 它在 chrome 上工作得很好 但在 IE 11 上 我得到了 curr
  • 按 2d 张量中的值索引 pytorch 4d 张量

    我有两个 pytorch 张量 X有形状 A B C D I有形状 A B 值在I是范围内的整数 0 C 获得张量最有效的方法是什么Y有形状 A B D 这样 Y i j k X i j I i j k 您可能想使用torch gather
  • Active Directory 搜索 - 按经理过滤

    我正在尝试从 Active Directory 获取具有指定管理员的用户列表 我使用以下 LDAP 过滤器但没有成功 manager CN Misterboss n 但是 它不返回任何结果 用户在 manager 属性中具有以下值 CN M
  • iPhone SDK 非原子和原子

    非常快速和简单的问题 在 Objective C 中 非原子和原子之间有什么区别 就像声明 property 非原子 保留 id 对象 这样的属性时 非原子保留 getter 和 setter 的代码在概念上类似于 id foo retur
  • 可以在单个 Windows 服务中托管多个 WCF 进程吗?

    我有一个托管在 Windows 服务中的 WCF 进程 我想知道是否可以安全地让多个 WCF 进程在同一个 Windows 服务中托管执行不同的操作 我需要担心端口吗 我正在使用 mex 端点 编辑 所以似乎正在修剪我冗长的代码 配置示例
  • 从 HList 中提取 FieldType 键和值

    我想提取一个头部的键和值HList使用这两种方法 def getFieldName K V value FieldType K V implicit witness Witness Aux K K witness value def get
  • 子集总和查找所有子集之和等于一个数字

    我一直在学习动态规划 我想通过打印出所有加起来等于一个数字的子集来进一步解决经典的子集和问题 我到底该怎么做呢 到目前为止 我知道如何根据是否存在相加的子集来打印 true 或 false public static boolean has
  • 解决包冲突

    假设我们有一个名为com example1含有一个Hello类 以及其他类 然后我们还有另一个包com example2还含有一个Hello类 显然具有不同的行为 现在假设我们需要 com example1 中的每个类和 com examp
  • 可以先为 ASP.Net 或 ASP.Net MVC 站点创建 HTML 吗?

    首先为 ASP Net 或 ASP Net MVC 站点编码 HTML 然后将其交给编码人员 这样可行吗 如果没有 整合这些的最佳方法是什么 这是绝对可以接受的 这是 MVC 的伟大之处之一 创建您的 HTML 和 CSS 让开发人员在动态
  • 如果我不打算返回任何内容,我应该使用像map和filter这样的数组方法吗?

    去年我一直在使用数组方法 例如map and filter更常见的是代替数组上的标准 for 循环 它感觉更容易阅读和编写 并且可以完成我最有可能要做的所有事情 例如创建局部变量 但很多时候我不会返回任何东西 不过埃斯林特不太喜欢我 据他们
  • 返回传递给函数的所有参数的总和

    一种方法是使用参数 我可以循环参数数组并返回所有传递的参数的总和 function sum var sum 0 for var i 0 i
  • Android Studio 与实验性 gradle 0.2.0

    我正在尝试使用最新版本的 android studio 设置基本的 ndk 构建 试图跟随本教程 这是我的gradle wrapper properties Thu Sep 17 14 22 34 CST 2015 distribution
  • 加入线程:“避免资源死锁”

    我使用一个 C 类来封装升压 asio io service class IoService public static IoService getInstance static IoService instance return inst
  • 从 xstream 反序列化 xml 文件

    我正在使用 Xstream 序列化 Job 对象 看起来工作正常 但反序列化时 我遇到了一个问题 Exception in thread main com thoughtworks xstream io StreamException on
  • 在表视图外部触摸时隐藏 UITableView

    我有一个小UI表格视图加载视图时隐藏 当我点击 SHOW UIButton the UI表格视图可见myTableView hidden NO 我想隐藏UI表格视图当用户触摸其框架之外时 谢谢你的帮助 最佳方法 简单 在显示 UITable
  • 如何一次将多个 csv 文件读入 R 并知道数据来自哪个文件? [复制]

    这个问题在这里已经有答案了 我想将多个 csv 文件读入 R 并将它们组合成一个大表 然而 我需要一列来标识每行来自哪个文件 基本上 文件中的每一行都有一个唯一的标识号 但这些数字在文件之间会重复 因此 如果我将所有文件绑定到一个表中而不知
  • JavaScript 对象属性可以引用同一对象的另一个属性吗? [复制]

    这个问题在这里已经有答案了 我最近尝试创建一个像这样的对象 var carousel slider carousel1 slider panes carousel slider children length 我的目的是通过缓存结果来提高