Javascript获取程序

Javascript获取程序,javascript,object,get,getter,Javascript,Object,Get,Getter,鉴于以下代码是foo,bar和baz所有代码实际上是相同的吗?如果使用get关键字有什么好处呢 var getValue = function () { return 'value'; } var foo = { value: getValue(), }; var bar = { get value() { return getValue(); }, }; var baz = { get value() { return 'value'; }, };

鉴于以下代码是
foo
bar
baz
所有代码实际上是相同的吗?如果使用
get
关键字有什么好处呢

var getValue = function () {
  return 'value';
}

var foo = {
  value: getValue(),
};

var bar = {
  get value() {
    return getValue();
  },
};

var baz = {
  get value() {
    return 'value';
  },
};

console.log('foo.value', foo.value); // foo.value value
console.log('bar.value', bar.value); // bar.value value
console.log('baz.value', baz.value); // baz.value value
给定以下代码,foo、bar和baz实际上是一样的吗

不,一点也不

  • foo
    将有一个
    value
    属性,该属性将是创建
    foo
    时调用
    getValue
    结果,以后不会调用
    getValue

  • bar
    将具有一个
    value
    属性,当像
    bar.value
    一样访问该属性时,该属性调用
    getValue
    并返回其返回值

  • baz
    将有一个带有显式值
    'value'
    值属性

区别在于:

  • 是否调用
    getValue
  • 调用
    getValue
这在一些日志记录和稍微更新的
getValue
版本中更为明显:

var getValue=function(){
var值=Math.floor(Math.random()*1000);
log(“调用getValue,返回”+value);
返回值;
}
console.log(“创建foo”);
变量foo={
值:getValue(),
};
console.log(“创建条”);
变量条={
获取值(){
返回getValue();
},
};
console.log(“创建baz”);
var baz={
获取值(){
返回42;
},
};
console.log(“调用foo”);
console.log('foo.value',foo.value);
控制台日志(“呼叫栏”);
console.log('bar.value',bar.value);
console.log(“调用baz”);
console.log('baz.value',baz.value)
。作为控制台包装器{
最大高度:100%!重要;;

}
感谢@t-j-crowder给出的清晰解释性答案。今天我学到了一些东西:)