所以我正在尝试构建一个要使用的自定义构造函数,我对原型部分有点困惑。我正在测试它,当我去做一个console.log(testVar.getHostname);它将函数作为文本返回。
所以我有以下内容。
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 :(得分: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 );