我在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
作为函数调用?
答案 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调用中发生的事情。