繁体   English   中英

访问“属性”时未定义Javascript对象值?

[英]Javascript object value undefined when accessing “attribute”?

为什么undefined

var testObj = {
   CONSTANT: "blah",
   someVal: this.CONSTANT
}
console.debug(testObj.someVal); // prints "undefined"

如果与我实际上正在创建一个新的原型有关,因此this关键字不起作用,那么我还想了解以下内容:

我正在使用Dean Edward的base.js,并且尝试执行与上述类似的操作:我有一个扩展Base的对象:

Test = Base.extend({
  testObj: {
   someVal: this.CONSTANT
  }
  CONSTANT: "blah";
});
var test1 = new Test();
console.debug(test1.testObj); // someVal is undefined

在上面,如果我执行someVal: "blah"它可以按预期工作; 我只是不确定为什么我不能访问this.CONSTANT 如果是因为this其应用于testObj而不是Test ,那么我该如何解决(我尝试设置that: this变量,没有运气)?

更新:根据答案,我看到我做错了。 我现在的问题是:使用base.js模型,是否可以通过同一类(在函数外部)访问“类级”常量?

this引用window而不是对象。

var CONSTANT =  "blah";
var testObj = {
   someVal: this.CONSTANT
}
testObj.someVal; // blah

您不能使用对象表示法访问对象本身。


您可以通过一个函数来更改此范围:

 function testObjCreator() { this.CONSTANT = "blah"; return ({ val: this.CONSTANT }) } var a = new testObjCreator() a.val; // blah 

“ this”(局部)仅在被称为方法的函数中定义。

base.js仅在函数定义中使用“ this”,它在其中将调用函数的对象指定为方法。 您的示例不包含任何函数定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM