我有这段代码:
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;
};
我仍然在控制台中收到该错误。我以为所有对象都会继承原型函数。
答案 0 :(得分:5)
您可以将原型函数和值视为所有实例的默认值。
为什么您看到TypeError
是因为您试图调用dany
的原型和方法test()
。
请尝试dany.test()
。
This would be your best bet在阅读它的工作原理时。
TLDR;
您获得了TypeError
,因为user
函数的实例没有自己的原型。但是,您可以通过__proto__
快捷方式访问实例原型。