javascript中的子对象函数

2024-01-03

我知道您可以使用子对象和函数创建文字对象:

var obj = {
    val : 1,
    level1 : {
        val : 2,
        val2 : 3,
        func : function(){
            return this.val2
        }
    }
}

console.log(obj.val);
console.log(obj.level1.val);
console.log(obj.level1.func());

输出:

1
2
3

我想做的是对对象中的方法做同样的事情,类似于:

function objType() {
    this.val = 1;
    this.func = function(){
        return this.val;
    }
    this.level1 = function(){
        this.val = 2;
        this.func = function(){
            return this.val;
        }
        this.level2 = function(){
            this.val = 3;
            this.func = function(){
                return this.val;
            }
        }
    };
};

那么我期望:

var obj = new objType();
console.log(obj.func());
console.log(obj.level1.func());
console.log(obj.level1.level.func());

输出:

1
2
3

但是,在脚本引发错误之前,仅输出第一个 console.log。

Javascript 有什么办法可以有子方法吗?

--edit--

我的目标是创建一个类,我可以使用它在屏幕中间显示一个框,用于显示消息、问题(以获得是/否响应)和表单。我正在考虑使用子方法来构建它的好方法,以便可以通过以下方式引用它:

function box() {
    this.show = function(){
        //multiple sub methods here
    }
    this.hide = function(){
        //code to hide window here
    }
}

var aBox = new box();
aBox.show.message('the message');
aBox.hide();
aBox.show.question('the question');
aBox.hide();

- 编辑 - 谢谢@肖恩·维埃拉

为了完整起见,我将使用他的解决方案将代码的修改版本放在这里:

function objType() {
    this.val = 1;
    this.func = function(){
        return this.val;
    }
    this.level1 = {
        val : 2,
        func : function(){
            return this.val;
        },
        level2 : {
            val : 3,
            func : function(){
                return this.val;
            }
        }
    }

var obj = new objType();
console.log(obj.func());
console.log(obj.level1.func());
console.log(obj.level1.level.func());

输出

1
2
3

你可以通过链接轻松做到这一点

function Box() {
    this.show = function(){
       //your code goes here
       return this;

    },
    this.message = function(message){
       //code goes here
       return this;
    }
  }

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

javascript中的子对象函数 的相关文章

随机推荐

  • oink 日志命令在 Heroku 上不起作用

    我最近开始使用oink gem https github com noahd1 oink在我的 Heroku 应用程序上 因为我注意到一些控制器操作出现了小内存泄漏 oink log 命令在本地工作正常 但我无法弄清楚让它在我的生产站点上工
  • 如何将图像添加到 DataGridView 中的单个特定单元格?

    使用 C 和 Visual Studio 我有一个DataGridView有 2 列 对于每一行 第一列将显示文本 对于除特定行之外的每一行 第二列将显示文本 在第二列的一个特定单元格中 我需要显示一张图像 例如 Row 0 Cell 0
  • GoogleSheets google.script.run 总是去 FailureHandler

    我正在使用 GoogleSheets HTMLService 我正在从我的 Html 页面的脚本中调用 google script run 但它总是会去 FailureHandler 这其中有什么问题吗 请参阅下面的代码 当我运行它时 它总
  • 调整 Java 7 中默认文件系统的行为

    Java 7 引入了一个用于编写自定义文件系统的出色 API 考虑一个用例 我不想实现新的文件系统 我只想调整现有文件系统的行为 例如 翻转从中写入 读取的每一位 在我看来 当前的jdk并没有为此提供适当的设施 AbstractFileSy
  • 想要了解 Haskell 中的递归吗?

    我现在已经使用了许多递归函数 但仍然无法理解这样的函数到底是如何工作的 我熟悉第二行 即 n 0 1 但我不太熟悉最后一行 即 n gt 0 fac n 1 n fac Int gt Int fac n n 0 1 n gt 0 fac n
  • 如何连接蓝牙 a2dp 设备?

    我正在尝试将运行 android 4 1 的 Android 设备与支持 a2dp 的音频接收器配对 我可以在蓝牙设置屏幕上毫无问题地做到这一点 但我很难在代码中做到这一点 基本上我能够发现该设备 但无法通过套接字连接到它 也许我使用了错误
  • 将 cookie 从第一个响应复制到下一个请求

    我使用 HttpRequest gt send 发送第一个 HTTP 请求 并收到带有以下 Set Cookie 标头的 302 响应 设置 Cookie SESSION SCOPE 1 路径 设置 Cookie III EXPT FILE
  • 同一 WAR 中的多个 JAX-RS 应用程序

    I have ApplicationPath resourcesP public class RestfulPrediction extends Application Override public Set
  • Postgresql regexp_matches 语法未按预期工作

    我使用 Postgres正则表达式 匹配提取数字的函数 我使用的正则表达式是 4 s 0 3 s 12 1 s d 4 如果我使用像这样的工具https regexr com https regexr com 验证它是否正常工作 我应用了以
  • NHibernate:映射列表字典

    我的班级有一个类型字段Dictionary
  • Jetty嵌入和JSP编译到1.7?

    我可以以某种方式指定jsp编译的vm的目标版本吗 我需要 1 7 而不是默认的 1 5 我有一个Web应用程序上下文 代码中的一些过滤器等 webapp 本身就是一场爆炸性的战争 因此没有使用 xml 配置 因为不需要 但似乎 为了做到这一
  • 初始包含块和视口之间的区别

    两者之间有什么区别还是相同 我认为它们指的是同一件事 但在不同的上下文中 但我不确定 所以我在这里问 初始包含块和视口虽然彼此相关 但却是两个不同的概念 视口通常是指浏览器窗口的可视区域 页面在屏幕上呈现在该区域中 初始包含块是页面内的逻辑
  • Python 2.6 聊天循环问题。无法同时接收和发送

    我正在尝试制作一个控制台聊天程序 但我的循环有问题 我无法同时获得输入和接收其他人的输入 如果一端发送了两条或更多消息 则另一端在发送一条消息之前无法接收下一条消息 我对 python 相当陌生 正在寻找正确方向的推动 我考虑过多线程 但这
  • 如何使用非 root 用户创建 postgres 容器?

    我想以非 root 用户身份运行 postgres 容器 默认情况下 该映像具有用户 postgres uid 999 当通过命令访问容器时docker exec it mycontainer bin bash 用户是root 为了使容器更
  • 如何在使用 node_save($node) 创建节点时将图像附加到节点;

    您好 我正在使用 drupal 7 并尝试通过使用 php 解析 xml 来导入数据 然后使用以下命令创建节点node save node 到目前为止 我已经成功地从 xml 创建节点 无需任何图像 我想在导入图像时将图像附加到节点 我知道
  • 将值从页面传递到用户控件

    我将姓名和姓氏存储在主页的两个标签中 我在一个类中也有这些值 类没有做太多事情 但我将它们用于将来的扩展 我有一个用户控件 它将发送一封以姓名和姓氏作为正文的电子邮件 我的问题是如何将标签或类变量值传输到用户控件的主体变量中 使用要传递给它
  • 混合 16 位线性 PCM 流并避免削波/溢出

    我尝试将 2 个 16 位线性 PCM 音频流混合在一起 但似乎无法克服噪音问题 我认为它们是在将样品混合在一起时溢出的 我有以下功能 short int mix sample short int sample1 short int sam
  • CPU和GPU的区别

    CPU的单个处理单元和GPU的单个处理单元有什么区别 我在互联网上看到的大多数地方都涵盖了两者之间的高级差异 我想知道每条指令可以执行哪些指令 它们的速度有多快 以及这些处理单元如何集成到完整的架构中 这似乎是一个答案很长的问题 所以很多链
  • 在 spring jpa 实体中保存级联实体后缺少值

    我对 Spring 和 JPA 等比较陌生 我试图在标签和客户之间创建多对多关系 双向 我想我的关系是正确的 除了一个问题之外 一切都运行良好 保存到数据库后 Tag 值为 Null 所以我正在做的是 向客户添加新的标签列表 然后使用级联选
  • javascript中的子对象函数

    我知道您可以使用子对象和函数创建文字对象 var obj val 1 level1 val 2 val2 3 func function return this val2 console log obj val console log ob