[ 
https://issues.apache.org/jira/browse/THRIFT-1545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15034716#comment-15034716
 ] 

Brian Peiris commented on THRIFT-1545:
--------------------------------------

This was resolved with THRIFT-1033 which added "hasOwnProperty" checks in the 
"for in" loops.

> Generated javascript code uses "for in" for looping over arrays
> ---------------------------------------------------------------
>
>                 Key: THRIFT-1545
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1545
>             Project: Thrift
>          Issue Type: Bug
>          Components: JavaScript - Compiler
>    Affects Versions: 0.8
>            Reporter: Larregoity
>            Priority: Minor
>
> For lists, generated javascript is like :
> >>
> GetRepairersResponse.prototype.write = function(output){ 
> output.writeStructBegin('GetRepairersResponse')
> if (null != this.repairers) {
> output.writeFieldBegin('repairers', Thrift.Type.LIST, 1)
> {
> output.writeListBegin(Thrift.Type.STRUCT, this.repairers.length)
> {
> for(var iter62 in this.repairers)
> {
> iter62=this.repairers[iter62]
> iter62.write(output)
> }
> }
> output.writeListEnd()
> }
> output.writeFieldEnd()
> }
> output.writeFieldStop()
> output.writeStructEnd()
> return
> }
> >>
> The use of "for in" generates problems when properties or functions are added 
> to the Array object (for instance in the sencha library, that adds the 
> "indexOf", "remove" and "contains" methods), because these properties will be 
> included in the for loop.
> As said in 
> https://developer.mozilla.org/en/JavaScript/Guide/Predefined_Core_Objects,: 
> "Since JavaScript elements are saved as standard object properties, it is not 
> advisable to iterate through JavaScript arrays using for...in loops because 
> normal elements and all enumerable properties will be listed."
> It would be much safer if the generated code used standard for loops to  like 
> :
> >>
> var colors = ['red', 'green', 'blue'];  
> for (var i = 0; i < colors.length; i++) {  
>   console.log(colors[i]);  
> }  
> >> 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to