簡體   English   中英

javascript/ 添加 function 到 repl.it 中的原型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM