javascript面向对象的函数调用初学者问题

时间:2009-07-08 05:21:12

标签: javascript function oop invoke

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

}

2 个答案:

答案 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 ++不同,您必须指定此