繁体   English   中英

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

[英]Prototype JavaScript -- function using constructor function

我有这个代码:

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;
};

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

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

尝试dany.test()代替。

在阅读它的工作原理时, 这将是您最好的选择

TLDR;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM