I believe it's working the way it's supposed to. <br/><br/>
If you try to use the same strategy for both layers, you're referencing the same OpenLayers.Strategy.Filter object in memory. If you look through the source of this class, you'll see properties like "layer" ('The layer this strategy belongs to.'), so it definitely appears it was intended to be used exclusively for one layer.

If that's a little unclear, think of it like this:<br/>
<pre>// add the first layer 
strat = new OpenLayers.Strategy.Filter({filter: filter});
layer1 = new OpenLayers.Layer.Vector("Layer1", {strategies: [strat]...});
strat['layer'] will now be a reference to layer1.

// add the second layer
layer2 = new OpenLayers.Layer.Vector("Layer2", {strategies: [strat]...});
strat['layer'] = ... already a reference to layer1, this isn't going to end well </pre>
<br/>
It sounds like you've already found a solution and are just asking for an explanation of why it doesn't work. If you haven't, try something like this...<br/>
<pre>
function shared_strategy() {
   return new OpenLayers.Strategy.Filter({
         filter: new OpenLayers.Filter.Comparison({...});
   });
}

layer1 = new OpenLayers.Layer.Vector("Layer1", {strategies: [strat1, strat2, shared_strategy()]...});
layer2 = new OpenLayers.Layer.Vector("Layer2", {strategies: [strat3, strat4, shared_strategy()]...}); 
</pre>

        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://osgeo-org.1560.n6.nabble.com/Reusing-Strategy-objects-tp4989163p4991475.html">Re: Reusing Strategy objects</a><br/>
Sent from the <a href="http://osgeo-org.1560.n6.nabble.com/OpenLayers-Users-f3910695.html">OpenLayers Users mailing list archive</a> at Nabble.com.<br/>