0

我在创建 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' ????
    };

}
4

2 回答 2

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可以作为通过调用构造函数创建的闭包内的变量使用;但是,使函数可用于调用两种不同的方式(通过自由变量和对象属性)并不是一个很常见的习惯用法。

我建议您阅读Crockford的这篇文章,以更好地了解可以将方法附加到对象的不同方式。

于 2009-07-08T05:23:54.147 回答
0

是的,与 Java/C#/C++ 不同,您必须指定这个

于 2009-07-08T05:24:58.390 回答