我在创建一个javascript对象时遇到了一个问题, 当一个函数调用对象中的另一个函数时,我们是否需要使用'this'
MyObject = function() {
this.function_one = function(param) {
return param + param;
};
this.function_two = function(param) {
return this.function_one(param) * this.function_one(param);
// when invoking function_one, do i need to use 'this' ????
};
}
答案 0 :(得分:2)
在这种情况下,是的。这是因为您将匿名函数指定为新构造对象的属性,这是访问它的唯一方法。
可以使其this
中不需要this.function_two
:
// Inside the MyObject constructor:
function function_one(param) {
return param + param;
}
// Optional, if you don't care about being able to call
// function_one from outside the closure
this.function_one = function_one;
这使得function_one
可用作通过调用构造函数创建的闭包内的变量;尽管如此,使函数可用于调用两种不同的方式(通过自由变量和对象属性)并不是一种非常常见的习惯用法。
我建议您阅读this article by Crockford,以便更好地了解将方法附加到对象的不同方法。
答案 1 :(得分:0)
是的,与Java / C#/ C ++不同,您必须指定此