【发布时间】:2014-06-10 04:40:51
【问题描述】:
我真的无法为我遇到的这个问题找到一个清晰简洁的答案 - 我什至不知道如何准确地表达它。但是我正在用Javascript(如果你愿意的话,是一个“类”)构建一个我可以重用的对象。我正在对对象使用 JSON 方法,因为这是我目前熟悉的唯一方法(我知道其他方法,但我还不能坐下来试验它们)。
所以,这是我正在做的一个例子:
var Thing = {
'property':{
'one':5,
'two':3
},
'action':(function(arg1, arg2){
alert(arg1 + ' ' + arg2);
return this.property.one + this.property.two;
});
}
var t = Thing;
alert(t.action('x', 'y'));
如您所见,我有我的对象,它有一些嵌套的属性。还有一个函数,它应该能够操纵所述属性。
我遇到的问题是范围。我试图找到一种方法来引用函数中对象的属性,而不假定属性属于该函数,因为它们不属于。我过去做过,我刚刚将“this”作为参数传递给函数,一切正常,但我敢打赌这不是一个好习惯。此外,如您所见,这个函数已经接受了一些参数。运行此代码会报错:“Uncaught TypeError: Cannot read property 'one' of undefined”。
我想保持我构建这个对象的方法完整——它是工作的东西,而且这个对象已经相当大了;但我正在寻找以某种方式“回到树上”来获取这些属性。
【问题讨论】:
-
JSON 在哪里?您似乎有一个对象初始化程序,甚至无法以您尝试过的方式重用。
-
Thing不是JSON class-Thing是一个对象。 -
为什么不把它定义为一个对象呢? var item = function(){/*这里的变量和函数 */}
标签: javascript json object scope