[英]javascript/ add function to prototype in repl.it
我正在關注本教程。
function Bear(type){
this.type = type;
}
Bear.prototype.growl = function(){
console.log('grrr')
}
var grizzly = new Bear('grizzly')
var bBear = new Bear('bBear')
console.log(grizzly, bBear, Bear.growl)
結果是:
{
"type": "grizzly",
"growl": function(){
console.log('grrr')
}
} {
"type": "bBear",
"growl": function(){
console.log('grrr')
}
} undefined
但我在repl.it中得到的是:
Bear { type: 'grizzly' } Bear { type: 'bBear' }
如果我將相同的代碼放在 SO 代碼片段中,結果是正確的。
為什么我在這里得到不同的結果?
這是不同環境如何記錄對象的工件。 在 Stack Overflow 上,Stack Snippets 記錄 object 原型鏈上任意位置的可枚舉屬性:
const theProto = { protoProp: 'val' }; const theInstance = Object.create(theProto); theInstance.instanceProp = 'val'; console.log(theInstance);
Node 中的相同代碼僅將屬性直接記錄在 object 上:
{ instanceProp: 'val' }
repl.it
通過 Node 運行代碼。
同樣,對於您的代碼片段,由於growl
屬性位於原型object 上,因此當您登錄bBear
時,您會在 Stack Snippet 中看到growl
,但如果您在 Node.js 中運行相同的代碼則不會。
無論您的環境如何,Javascript 中的實際 object 都是相同的 - 您沒有做錯任何事情。
日志記錄行為未標准化。 它取決於引擎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.