簡體   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