Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回对象中的默认值_Javascript_Object - Fatal编程技术网

Javascript 返回对象中的默认值

Javascript 返回对象中的默认值,javascript,object,Javascript,Object,如果我有这样一个JS对象: myObject = { value: 'test value', editable: true } 在代码中请求myObject时,我希望myObject直接返回value,同时仍然允许访问myObject.editable。 我试过寻找getter,但这似乎与我试图实现的目标不符。我认为您所寻找的是Java中的toString或php中的\uu toString。不幸的是,javascript中不存在这个神奇的函数 一个简单的解决办法是: var myO

如果我有这样一个JS对象:

myObject = {
  value: 'test value',
  editable: true
}
在代码中请求
myObject
时,我希望myObject直接返回
value
,同时仍然允许访问
myObject.editable

我试过寻找getter,但这似乎与我试图实现的目标不符。

我认为您所寻找的是Java中的
toString
或php中的
\uu toString
。不幸的是,javascript中不存在这个神奇的函数

一个简单的解决办法是:

var myObject = function() {
  var _value: 'test value',
  var editable: true,

  // fluent get/set for value
  function value(value) {
    if(typeof value === 'undefined') {
      return _value;
    }
    _value = value;
    return this;
  }

  function isEditable() 
    return editable;
  }

  return {
    value: value,
    isEditable: isEditable
  }
}

因此,您可以通过请求myObject的代码中的
myObject.value()
访问该值?您如何访问它?到目前为止,您尝试了什么?如果您希望
myObject
在保存时返回字符串“test value”和
myObject.editable
返回
true
,那么我很抱歉,据我所知,这是不可能的。Rayon,只要调用
myObject
我就得到了这个问题的否决票。有些人无法探索我们心爱的JS的边缘?如果你投了反对票,请告诉我原因。这是一个有趣的问题,我在当前版本的JavaScript/ES中搜索了答案,但我想到了一个想法。如果这是一个特写,那就很难理解了。开发人员将没有上下文,这可能会导致大量问题。想象一下,如果你将一个字符串对象的默认值更改为一个复杂对象,那么这种更改会产生很多副作用,很多副作用可能看不到。我认为你最好的选择是想出一个易于遵循的模式。例如,使用
value
属性,这样您就知道这是默认值。这仍然需要我调用
.value()
。我希望在请求
myObject
时直接查看值是的,不幸的是,在javscript中无法实现您想要做的事情。我的答案只是一个变通办法。