我们说我有一个带驱动方法的汽车对象。我可以这样做:
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'
}
}
答案 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