在吊装功能中返回物体的成本

时间:2017-06-22 18:28:23

标签: javascript

我们说我有一个带驱动方法的汽车对象。我可以这样做:

var car = {
  engine: {
    horsepower: 200,
    weight: 980
  },
  owner: {
    firstName: 'bob',
    lastName: 'tom'
  },
  drive: drive
}

function drive(){
  console.log("vrooom!");
}

我通过利用提升的函数定义从对象中抽象出驱动方法的实现。我也可以隐藏"配置"通过使用返回像这样的对象的函数:

var car = {
  engine: getEngine(),
  owner: getOwner(),
  drive: drive
}

function drive(){
  console.log("vrooom!");
}

function getEngine(){
  return {
    horsepower: 200,
    weight: 980
  }
}

function getOwner(){
  return {
    firstName: 'bob',
    lastName: 'tom'
  }
}

我很好奇这样做的成本与之前相比是多少,是不是很有意义?

我问的原因是,我正在使用角度的UI路由器,并且我开始获得大量的州/路线。如果我可以将所有状态列在顶部以便我可以看到功能,而不让开发人员浏览整个文件以查找他们正在寻找的状态,那将是非常好的。保持实施/功能可搜索,但在最顶层提供路由器的接口。

之间的差异(记忆/速度):

.state('someState', {
  url: 'somePath',
  templateL: 'some content'
}

.state('someState', getSomeStateConfig())

function getSomeStateConfig(){
  return {
    url: 'somePath',
    templateL: 'some content'
  }
}

1 个答案:

答案 0 :(得分:0)

根据@trincot

运行一些代码
var time = new Date()
for (var i = 1; i < 10000000; i++){
  var car = {
    engine: getEngine(),
    owner: getOwner(),
    drive: drive
  }

  function drive(){
    console.log("vrooom!");
  }

  function getEngine(){
    return {
      horsepower: 200,
      weight: 980
    }
  }

  function getOwner(){
    return {
      firstName: 'bob',
      lastName: 'tom'
    }
  }
}

var secondTime = new Date()

console.log(' first: ', secondTime - time);

VS

var time = new Date()

for (var i = 1; i < 10000000; i++){
  var car = {
    engine: {
      horsepower: 200,
      weight: 980
    },
    owner: {
      firstName: 'bob',
      lastName: 'tom'
    },
    drive: drive
  }

  function drive(){
    console.log("vrooom!");
  }

}

var secondTime = new Date()
console.log(' first: ', secondTime - time);
当我开始得到1.2秒的差异时,有一千万。在100万这是~140ms的差异。在100,000时差异为~13 ms