2014-01-24 50 views
1

所以我想构建一个自定义的构造函数来使用,我对原型部分有点困惑。我正在测试它,当我去做一个console.log(testVar.getHostname);它作为文本返回函数。关于Javascript构造函数和原型的困惑

所以我有以下几点。

function nodeInfo(hostname) { 
    this.hostname = hostname; 
}; 

nodeInfo.prototype.getHostname = function() { 
    return this.hostname; 
}; 

var testVar = new nodeInfo("google.com"); 

console.log(testVar.getHostname); 

输出如下。

function() { 
return this.hostname; 
} 

任何想法我在做什么错在这里?原型方法可以在构造函数之外吗?我在一大堆搜索谷歌的文章中看到了这种方式。 如http://www.phpied.com/3-ways-to-define-a-javascript-class/

任何帮助,非常感谢。

+0

这是正确的。 'testVar.getHostname'是一个函数。你有没有试过调用它? 'console.log(testVar.getHostname());' –

回答

1

您想要console.log(testVar.getHostName())运行该功能。

JavaScript中的函数是一流的值。它们可以被变量引用,存储在数组中,设置为属性等。在这种情况下,你要求它为该函数打印一个字符串值,在这种情况下恰好是源代码。你也可以这样做:

console.log(typeof testVar.getHostName); 
// "function" 

就可以升级了自己的知识,审视和思考以下的输出:

var testVar = new nodeInfo("google.com"); 
hostName = "Global"; 
var f1 = testVar.getHostName; 
var o = { f2: testVar.getHostName, hostName:"In Object" }; 

console.log(testVar.getHostName()); 
console.log(f1()); 
console.log(o.f2()); 
f1.call(o); 
o.f2.call(testVar); 
+0

谢谢!,我一直在javascript上工作​​,我无法相信我忽略了括号。 –

+0

@HuyNguyen非常欢迎。注意我的编辑更多的知识。 – Phrogz