Javascript 写入对象文字意味着属性不能相互依赖?

Javascript 写入对象文字意味着属性不能相互依赖?,javascript,literals,Javascript,Literals,何时以及为什么要键入对象文字? 如果键值对不能交互,这不是有点原始吗? 在下面的例子中,我遗漏了什么,受过教育的方式是什么 在这里,重力将导致NaN var ball = { size:10, gravity:this.size/2 } 在这里,重力将导致成功的5 var ball = { size:10 } ball.gravity = ball.size/2; var ball = {}; ball.size = 10; ball.gravity = ball.s

何时以及为什么要键入对象文字? 如果键值对不能交互,这不是有点原始吗? 在下面的例子中,我遗漏了什么,受过教育的方式是什么

在这里,重力将导致NaN

var ball = {
    size:10,
    gravity:this.size/2
}
在这里,重力将导致成功的5

var ball = {
    size:10
}
ball.gravity = ball.size/2;
var ball = {};
ball.size = 10;
ball.gravity = ball.size/2;
在这里,重力将导致成功的5

var ball = {
    size:10
}
ball.gravity = ball.size/2;
var ball = {};
ball.size = 10;
ball.gravity = ball.size/2;
像这样的

var ball = {
  g: 0,
  get gravity() {
    return this.g;
  },
  set gravity(n) {
    this.g = (parseFloat(n) || 0);
  },
  get size() {
    return (parseFloat(this.g) || 0) / 2;
  },
  set size(n) {
    this.g = (parseFloat(n) || 0) * 2.0;
  }
}

ball.gravity = 10;
console.log(ball.size)
// 5
ball.size = 4;
console.log(ball.gravity)
// 8

相关还是重复?:就像你说的:如果你有依赖项,那么就不要使用对象文本。但是,如果没有依赖项,则对象文字可以节省大量键入,因此不太容易出错。这是函数的隐式参数,没有函数。您基本上是在执行undefined/2===NaN,其中严格模式下为undefined。