在C++中,我最熟悉的语言,通常是一个声明这样的对象:
class foo
{
public:
int bar;
int getBar() { return bar; }
}
Run Code Online (Sandbox Code Playgroud)
调用getBar()工作正常(忽略bar可能未初始化的事实).内部的变量bar在getBar()类的范围内foo,所以我不需要说,this->bar除非我真的需要说清楚我指的是' bar而不是比如参数.
现在,我正试图在Javascript中开始使用OOP.所以,我查找如何定义类并尝试相同的事情:
function foo()
{
this.bar = 0;
this.getBar = function() { return bar; }
}
Run Code Online (Sandbox Code Playgroud)
它给了我bar is undefined.更改bar以this.bar解决问题,但为每个变量执行此操作会使我的代码变得非常混乱.这对每个变量都是必要的吗?由于我找不到与此有关的任何问题,这让我觉得我做的事情从根本上是错误的.
编辑:是的,所以,从评论我得到的是,this.bar一个对象的属性,引用不同于bar局部变量的东西.有人可以说,为什么这就是范围和对象,以及是否有另一种方法来定义一个没有必要的对象?
我想知道如何获得函数调用者的绝对路径?
让我们说:
在文件中a.js我打电话b(); b()是文件中定义的函数b.js.a.js需要b.那么如何a.js从b.js节点中获取绝对路径?
在JavaScript(ES5 +)中,我试图实现以下场景:
.size,可以通过直接属性读取从外部读取,但不能从外部设置..size必须从原型上的某些方法维护/更新该属性(并且应保留在原型上).obj.size = 3;不允许直接设置,就可以在侧门进入酒店.我知道我可以使用在构造函数中声明的私有变量并设置一个getter来读取它,但是我必须移动需要从原型中维护该变量的方法并在构造函数中声明它们(所以他们可以访问包含变量的闭包.对于这种特殊情况,我宁愿不从原型中取出我的方法,所以我正在寻找其他选项可能是什么.
还有什么其他想法(即使有一些妥协)?