[英]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.