【发布时间】:2021-08-23 23:00:08
【问题描述】:
我一直在阅读 with() 并试图弄清楚如何重写这段代码。
_$createRootItemAreas: function() {
var areaSize = 50;
var sides = { y2: 0, x2: 0, y1: 'y2', x1: 'x2' };
for( side in sides ) {
var area = this.root._$getArea();
area.side = side;
if( sides [ side ] )
area[ side ] = area[ sides [ side ] ] - areaSize;
else
area[ side ] = areaSize;
with( area )
surface = ( x2 - x1 ) * ( y2 - y1 );
this._itemAreas.push( area );
}
},
应该是:
area.surface = ( x2 - x1 ) * ( y2 - y1 );
或
area.surface = ( area.x2 - area.x1 ) * ( area.y2 - area.y1 );
【问题讨论】:
-
你有两个可能可行的建议,为什么不两个都试试呢?
-
with适用于块中的所有变量,无论它们是被读取还是写入,它们都被尝试作为对象的属性进行访问。然而,这真的取决于area对象是什么(它有什么属性)。