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给出的清晰解释性答案。今天我学到了一些东西:)