gpt4 book ai didi

javascript - 在对象定义中访问对象的属性

转载 作者:行者123 更新时间:2023-11-28 02:59:54 25 4
gpt4 key购买 nike

所以我有一个如下所示的对象定义:

var Foo = window.Foo = {
MIN_ROWS : 10,
MIN_COLS : 10,

NUM_ROWS : (function(){ return Math.max( parseInt(this.params.rows) || 0, this.MIN_ROWS); })(),

// etc...

params: (function(){ /* ... */ })() // parses the GET querystring parameters from the URL and returns as a JSON object

}

对于NUM_ROWS属性,我想将其设置为Foo.params.rows(如果它存在并且大于MIN_ROWS),否则将其设置为 MIN_ROWS

我已经弄清楚了这个的逻辑,唯一给我带来麻烦的是当我像上面那样自调用函数时,this变量引用 window 而不是像我期望的那样 Foo 。 (这是我在控制台中收到的错误消息:“TypeError:表达式 'this.params' [未定义] 的结果不是对象。”)

如果我不自调用该函数,它就可以正常工作。但是,我希望 NUM_ROWS 是一个整数,而不是一个函数,以便我可以将其作为 Foo.NUM_ROWS 而不是 Foo.NUM_ROWS( ) 在我的代码的其他部分。

有人可以帮我解决这个问题吗?

最佳答案

这是我修复它的方法,我稍微简化了代码,但是您应该明白了,如果您还没有,希望它有所帮助。如果您想完善您的 JavaScript,那么下面的链接绝对值得关注。

var FooFactory = function(){
this.MIN_ROWS = 10;
this.MIN_COLS = 10;
this.params = { rows : 12};

this.NUM_ROWS = Math.max( parseInt(this.params.rows) || 0, this.MIN_ROWS);
// etc...
};
var Foo = window.Foo = new FooFactory();

document.write(Foo.NUM_ROWS);

JavaScript 中的 this 是正在调用的对象,而不是被调用的对象,您需要查看 Doug Crockford 的网站以获取一些关于 this 含义以及在这种情况下它如何影响您的使用的好文章。

This article特别向您展示这是什么意思

关于javascript - 在对象定义中访问对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com