原型JavaScript - 使用构造函数的函数

时间:2013-12-25 07:49:14

标签: javascript

我有这段代码:

function user(name) {
    console.log(name);
}

user.prototype.test = function() {
    return 2 + 2;
};

console.log(user.prototype.test());

var dany = new user("dany");
var david = new user("david");

console.log(dany.prototype.test());

控制台日志:

4
dany
david
Uncaught TypeError: Cannot call method 'test' of undefined

不应该将test()函数分配给user()函数的所有实例(它是对象构造函数)吗?

如果您对我应该阅读的内容有更好的建议,请更多地了解原型,请继续;)

编辑:

即使使用:

Object.prototype.test = function() {
    return 2 + 2;
};

我仍然在控制台中收到该错误。我以为所有对象都会继承原型函数。

1 个答案:

答案 0 :(得分:5)

您可以将原型函数和值视为所有实例的默认值。 为什么您看到TypeError是因为您试图调用dany的原型和方法test()

请尝试dany.test()

This would be your best bet在阅读它的工作原理时。

TLDR;

您获得了TypeError,因为user函数的实例没有自己的原型。但是,您可以通过__proto__快捷方式访问实例原型。