2017-06-17 77 views
0

我是学习Node.js的新手。为什么console.log会给我定义?我希望它能打印出'Hello World!'代替。我错在哪里?Nodejs调用函数

谢谢!

function Greetr() { 
    this.greeting = 'Hello World!'; 
} 


Greetr.prototype.greet = function() { 
    console.log(this.greeting); 
} 

Greetr.prototype.greet(); 
+2

可能重复调用你greet功能是否有functionName调用函数之间有什么区别.prototype.methodName()和funObject.methodName()?](https://stackoverflow.com/questions/44517936/is-there-any-difference-between-calling-function-in-functionname-prototype-metho) –

回答

1

因为你通过你的原型访问你的问候。在这种情况下,this不是您所期望的对象。通过记录,你可以看到什么是this

function Greetr() { 
 
    this.greeting = 'Hello World!'; 
 
} 
 

 
Greetr.prototype.greet = function() { 
 
    console.log(this); 
 
} 
 

 
Greetr.prototype.greet();

正如你看到的,this指的是你prototype object,它不具有名称greeting任何财产,所以登录undefined

得到你需要先创建一个object期望的结果,然后通过的[即object

function Greetr() { 
 
    this.greeting = 'Hello World!'; 
 
} 
 

 

 
Greetr.prototype.greet = function() { 
 
    console.log(this.greeting); 
 
} 
 

 
var greetr = new Greetr(); 
 
greetr.greet();