为什么在 JS 类中声明的变量是“undefined”[重复]

2024-03-27

尝试在 JS 中创建一个具有权重属性的类,代码如下:

function Foo() {
    var weight = 10;
    console.log(weight);
}

当我实例化它时var bar = new Foo();, 10已记录到控制台。

当我稍后打电话时console.log(bar.weight);, undefined已记录到控制台。这是为什么?我的印象是,JS 类中声明的属性默认是公共的?


那是因为你还没有真正设置weight作为财产bar;它只是在构造函数调用时创建的局部变量(这与其他一些语言不同,例如 Java)。要将其创建为属性,您需要使用关键字this:

function Foo() {
    this.weight = 10;
}

那套weight成为...的财产Foo对象,包括bar,所以你应该能够使用console.log(bar.weight)没有问题。

function Foo() {
  this.weight = 10;
}

var bar = new Foo();

document.body.innerHTML = "<code>bar</code>'s weight property is equal to " + bar.weight + ".";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 JS 类中声明的变量是“undefined”[重复] 的相关文章

随机推荐

  • QThread::start(优先级) 与 Linux

    我正在使用一些QThread基于 KDE Neon 18 04 中的工作线程 基于 Ubuntu 18 04 内核 4 15 0 46 generic 工作线程干扰了我的桌面应用程序 因此我决定降低它们的优先级 Qt 文档QThread s
  • Syslog 真的有 1KB 消息限制吗?

    Syslog 似乎有 1KB 消息限制 这是硬编码到 Syslog 协议中的 还是可以为每个服务器设置的参数 我希望我读到的文章已经过时 所以如果您有任何信息 请分享 这是正确的 正如在系统日志协议 RFC https www rfc ed
  • 从 PHP/Apache 返回 100-Continue

    我正在尝试找到一种方法来防止脚本将不必要的数据上传到 PHP 脚本 我最初试图终止传入的读取连接 这显然违反了 HTTP 协议 我无法让它工作 但我一直在研究替代方案 发现100 Continue状态码正是我所需要的 我的客户应该发送所需的
  • AES密钥导出函数

    我有一个 bash 脚本 它使用 openssl 加密数据 并使用 Java 代码解密结果 根据我之前的post https stackoverflow com questions 8343894 aes encrypt with open
  • 使用 Selenium 测试 Sencha 2 应用程序

    我无法单击 Sencha 2 生成的按钮 因为它不是输入字段 它用 div 和 span 构建了按钮 找到这个链接 它描述了如何通过 Selenium 测试单击按钮http mobilewebqa blogspot com http mob
  • 如何获取 sqlalchemy 中受影响的行数?

    我有一个关于 Python 和 sqlalchemy 模块的问题 相当于什么cursor rowcount在 sqlalchemy Python 中 ResultProxy对象有一个rowcount https docs sqlalchem
  • 替换交叉过滤器数据,恢复维度和组

    我在用着dc js http dc js github io渲染数据集的漂亮气泡图 底层的 dc js 是交叉过滤器 https github com square crossfilter 我想使用来自服务器的新数据顺利刷新我的图表 这个问
  • 如何获取 Matplotlib 当前可用的所有字体的列表?

    例如当我想设置时font in matplotlib rc font font import matplotlib font manager matplotlib font manager findSystemFonts fontpaths
  • Spring-data-mongo无法使用构造函数实例化java.util.List

    Using spring data mongodb 1 5 4 and mongodb driver 3 4 2 我有课Hotel public class Hotel private String name private int pri
  • 如何计算数字的正确宽度(以像素为单位)?

    我有一个自定义控件 将来可能有用户可自定义的字体 缩放已经实现 我必须在两位数字下方填充一个矩形 形成以 10 为基数的数字 我对零个 一个或两个数字有不同的颜色 使用字体 Name Microsoft Sans Serif Size 16
  • Pandas 对具有固定行数的数据帧进行重新采样

    With pandas DataFrame resample https pandas pydata org pandas docs stable generated pandas DataFrame resample html我可以将 D
  • 如何使用javascript从字符串中获取锚标记的href值

    如何使用纯javascript而不使用Jquery获取下面字符串内容中最后一个锚标记的href值 var contents div a href http www okhype com wp content uploads 2016 12
  • 使用<尖括号>批量写入文本文件

    我正在尝试使用批处理脚本动态创建一个小型 XML 文件 但在编写以尖括号开头和结尾的行时遇到问题 1 如果我做类似的事情 set foo
  • Android Studio 无法解析 Espresso 3.0.0

    根据Android Espresso 文档 https developer android com training testing espresso setup html迄今为止 添加 Espresso 依赖项 要将 Espresso 依
  • 声纳扫描仪引擎未启动

    我按照以下说明进行操作使用 SonarQube Scanner for Ant 进行分析 https docs sonarqube org display SCAN Analyzing with SonarQube Scanner for
  • Zend_Forms、控制器放在哪里?模型?别的地方?

    构建 Zend Forms 的代码最好放在哪里 我曾经把这个逻辑放在我的控制器中 但在我需要在不同的地方使用相同的表单后 我就放弃了这个逻辑 这意味着我必须在不同的控制器中重复创建表单 因此 我将表单创建代码移至我的模型中 这看起来正确吗
  • Swift:来自浮点的字符串而不舍入值

    建议对小数进行四舍五入 但我面临着一种情况 我只需要降低精度 输出 15 96 至 16 0 所需输出 15 96 至 15 9 Codes var value AnyObject dict valueForKey XXX var stri
  • GCC 使用 __stdcall 编译 dll

    当我们在 Visual Studio 2008 中使用 stdcall 编译 DLL 时 DLL 中的编译函数名称为 函数名 尽管当我们使用 wx dev cpp 使用 GCC 编译相同的 dll 时 GCC 会附加该函数具有的参数数量 因
  • 即时刷新 Google 可视化

    我目前正在通过谷歌可视化创建谷歌图表 我希望能够通过单击按钮刷新 更新此图表 我尝试了很多不同的方法来做到这一点 但没有一个有效 所以我正在寻找任何人都可以提出的建议 我当前的平台是 ASP net 使用 C 而 google 的东西是用
  • 为什么在 JS 类中声明的变量是“undefined”[重复]

    这个问题在这里已经有答案了 尝试在 JS 中创建一个具有权重属性的类 代码如下 function Foo var weight 10 console log weight 当我实例化它时var bar new Foo 10已记录到控制台 当