JavaScript函数调用

时间:2017-08-08 01:24:06

标签: javascript function object

我在JS中创建了一个如下对象:

function test(){

  this.testParam1 = "add";

  this.tstMethod = function(){

  console.log("Hello")  ;   

 };

}

var testObj = new test();

console.log(assignTest.tstMethod());  ---> it prints value as undefined
console.log(assignTest.tstMethod);  ----> it prints the function

请问任何人请解释我为什么不能将tstMethod作为函数调用?

3 个答案:

答案 0 :(得分:3)

您的对象名称不匹配(assignTest vs testObj),但在纠正之后,这是正在发生的事情:

function test() {
  this.testParam1 = "add";

  this.tstMethod = function() {
    console.log("Hello");
  };
}

var testObj = new test();

console.log(testObj.tstMethod());
console.log(testObj.tstMethod);

这将给出以下输出;请注意,tstMethod正在被正确调用:

Hello                         // printed by tstMethod upon its invocation
undefined                     // the return value of tstMethod
this.tstMethod = function() { //
  console.log("Hello");       // the tstMethod function itself
};                            //

答案 1 :(得分:0)

您的:console.log(assignTest.tstMethod());返回undefined是否正常,因为您的功能不会返回仅打印内容的内容。

如果你想要这个:console.log(assignTest.tstMethod());要返回一些内容,你应该在tstMethod函数return "Hello";中进行此操作。

此外,assignTest未定义,您应将其重命名为:testObj

这是我用来测试它的代码:

function test(){
    this.testParam1 = "add";
    this.tstMethod = function(){
        return "Hello";
    };
}

var testObj = new test();
console.log(testObj.tstMethod());

希望我能帮到你!

答案 2 :(得分:0)

()运算符是导致调用函数的原因。当您在没有()运算符的情况下访问函数时,将返回函数定义。这是你上次console.log调用中发生的事情。