首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从javascript模块属性获取未定义

从javascript模块属性获取未定义
EN

Stack Overflow用户
提问于 2013-05-30 18:01:52
回答 3查看 451关注 0票数 0

我有种感觉我错过了一些明显的东西。我从javascript模块返回一个变量,但它始终未定义。

下面是模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var MyNs = MyNs || {}; 
MyNs.Global = function () {
   var privateTestVar;
   var init = function () {
       if (privateTestVar == null ) {
           privateTestVar = "this is a test" ;
           console.log( 'Init: ' + privateTestVar);
       }
   };

   var Public = {
       init: init,
       TestVar: privateTestVar
   }

   return Public;
} ();

这里有个电话:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyNs.Global.init();console.log( 'Called: ' +MyNs.Global.TestVar);

init函数中的console.log工作正常并返回值,但另一个控制台日志返回未定义的值。我完全错过了。任何帮助都将不胜感激。

更新:--我已经对代码做了一些修改,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    var privateTestVar = function () { return 'Test!'; }

var Public = {
    TestVar: privateTestVar
}

以及它的变体,但是它会将这个确切的文本返回到控制台:"function () {返回'Test!';}“

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-30 18:05:00

在这里分配Public时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var Public = {
    init: init,
    TestVar: privateTestVar
}

privateTestVar仍未定义(因为init()尚未运行),因此TestVar属性被初始化为privateTestVar的值,即undefined

TestVar属性被分配为privateTestVar的值。如果它最初是未定义的(在本例中是这样的),它将保持这种状态,直到您将一些不同的东西分配给TestVar属性。我不会自动继承privateTestVar的未来值,这也许正是您所期望的。Javascript没有一种方法来指定一个变量总是包含分配给另一个变量的任何内容。privateTestVar和TestVar`各有各自的值。将某项分配给一个变量不影响另一个变量。

票数 3
EN

Stack Overflow用户

发布于 2013-05-30 18:07:44

我建议使用getter来使私有变量真正成为私有变量。这将正确地工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var Public = {
    init: init,
    getVar: function() { return privateTestVar; }
}

MyNs.Global.init();console.log( 'Called: ' +MyNs.Global.getVar());
票数 1
EN

Stack Overflow用户

发布于 2013-05-30 18:11:31

问题如@jfriend00所述。将代码更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var init = function () {
    if (privateTestVar == null ) {
        privateTestVar = "this is a test" ;
        Public.TestVar = privateTestVar;
        console.log( 'Init: ' + privateTestVar);
    }
};

我没有测试这个,但理论上应该有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16848692

复制
相关文章
javascript_获取浏览器属性
navigator.appName:浏览器名称; navigator.appVersion:浏览器版本; navigator.language:浏览器设置的语言; navigator.platform:操作系统类型; navigator.userAgent:浏览器设定的User-Agent字符串。 'use strict'; alert('appName = ' + navigator.appName + '\n' + 'appVersion = ' + navigator.appVersion
机器学习和大数据挖掘
2019/07/02
7290
JavaScript之获取和设置元素属性
1.与我前面的随笔获取元素的那些方法不同http://www.cnblogs.com/GreenLeaves/p/5689075.html 获取元素属性的方法getAttribute()不属于document对象,所以不能通过document对象调用。注意:他只能通过元素节点对象调用,但是可以与获取元素的方法getElementsByTagName()、getElementsById()等方法连用;如下代码: <body> <div id="target"> <div class="
郑小超.
2018/01/24
1.4K0
JavaScript 教程「9」:DOM 元素获取、属性修改
Web API 是指网页服务器或者网页浏览器的应用程序接口。简单来讲,就是我们在编写 JavaScript 代码时,可以通过 Web API 来操作 HTML 网页和浏览器。
村雨遥
2022/05/23
2.6K0
JavaScript 教程「9」:DOM 元素获取、属性修改
如何从JavaScript对象中删除属性?
在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
疯狂的技术宅
2021/04/01
12.3K0
JavaScript(19)jQuery HTML 获取和设置内容和属性
jQuery HTML jQuery 拥有可操作 HTML 元素和属性的强慷慨法。
全栈程序员站长
2022/07/12
1.4K0
Java-方法重载时 调用未定义的对象属性
public class TestWayReload { int id; String name; String pwd; public TestWayReload(){ System.out.println(“Hellow World!”); System.out.println("################"); }
Fisherman渔夫
2019/07/30
5.5K0
JavaScript 学习-32.HTML DOM 获取和修改属性节点
前言 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是注释节点 属性节点 比如有一个p标签元素节点 <p id="p2" class="text-center" >点我看看</p> 那么它有2个属性节点:id="p2"和class="text-center" 和一个文本节点点我看看 获取元素的属性 | 方法                      
上海-悠悠
2022/05/30
1.3K0
反射获取属性字段及属性值
上篇文章我们可以通过自己的类加载器加载指定类了,在获取指定类后我们需要拿到类属性名称及类属性的值。 获取属性字段: public static List<Field> getFields(String
春哥大魔王
2018/07/23
4.3K0
反射获取属性字段及属性值
JavaScript之firstChild属性、lastChild属性、nodeValue属性学习
1.数组元素childNodes[0]有更直观易读的优点,这边在介绍一个有同样功能的属性,且更加语义化-------->firstChild属性 假设我们需要目标元素节点下的所有子元素中的第一个子元素我们可以这样做: 目标元素节点下的子元素节点数组.firstChild 这句代码等价于 目标元素节点下的子元素节点数组[0]; 目标元素节点.childNodes[0] 这句代码等价于 目标元素节点.firstChild; 与此类推当我们需要目标元素节点下的所有子元素节点中的最后一个元素我们可以这样做: 目标
郑小超.
2018/01/24
1.7K0
JavaScript之childNodes属性、nodeType属性学习
1.childNodes属性:在一颗节点树上,childNodes属性可以用来获取任何一个元素的所有元素,它是一个包含这个元素所有子元素的数组。 <body> <script type="text/javascript"> function countBodyChildren() { var allelements = document.getElementsByTagName("body"); aler
郑小超.
2018/01/24
1.1K0
JavaScript数据属性和访问器属性
看《深入理解JavaScript》的this篇时看到“访问器属性”这个不熟悉的名词,百度后找到两篇感觉比较合适的文章,整合记录一下,以参考资料2为主,参考资料1为辅助补充。
WindCoder
2018/09/20
1.6K0
kotlin获取属性注解
微笑具有一种挽救力,它可以点亮天空,可以振作精神,可以改变你周围的气氛,更可以改变你——乔·吉拉德 kotlin里获取属性注解首先引入反射依赖: <dependency> <groupId
阿超
2023/01/06
1.6K0
JavaScript——对象的属性
在JavaScript中,所有的对象都是一组属性的集合,属性可以是数值,字符串等原始类型,也可以是函数,或者是其他对象。
Html5知典
2019/11/26
2.4K0
JavaScript实现私有属性
JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承;再比如JavaScript不能实现信息的隐藏,不能实现私有成员。本文并不是为了打破以上误解(实际上笔者自己也有困惑),只是简单介绍几种JavaScript实现私有属性的方式,以及各自的优劣。 1. 基于编码规范约定实现方式 很多编码规范把以下划线_开头的变量约定为私有成员,便于同团队开发人员的协同工作。实现方式如下: function Person(name){ this._na
寒月十八
2018/01/30
9700
javascript的NaN属性
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
OECOM
2020/07/01
1.1K0
JavaScript 操作元素属性
1、html的属性和js里面属性写法一样 2、“class” 属性写成 “className” 3、“style” 属性里面的属性,有横杠的改成驼峰式,比如:“font-size”,改成”style.fontSize”
Devops海洋的渔夫
2019/05/31
1.1K0
Javascript的private属性
在无意间漫游网上的文章时,看到一个指出对JavaScript误解的部分提到了这个关于JavaScript私有对象的问题。
雪碧君
2023/02/15
7180
JavaScript模块探索
随着JS项目越来越大,再依靠简单的命名空间来解决冲突不是很可取,项目大了之后不只有变量冲突的问题,还有模块依赖以及加载策略的问题等,这次就介绍现存的几种模块化、依赖的解决方案。 AMD AMD规范起源
前端黑板报
2018/01/29
5460
JavaScript获取路径
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117720.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
1.4K0
JavaScript获取路径
Jquery attr()方法 属性赋值和属性获取
jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式。
软件小生活
2021/08/16
10.5K0
Jquery attr()方法 属性赋值和属性获取

相似问题

从Javascript对象获取属性

14

从javascript获取数据属性

42

从javascript获取hiddenvalue属性

10

JavaScript从select获取属性

40

JavaScript -从对象获取属性,如果未定义则抛出错误

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文