Black lives matter
Portrait Dr. Axel Rauschmayer
Dr. Axel Rauschmayer
Homepage | Twitter
Cover of book “JavaScript for impatient programmers”
Book, exercises, quizzes
(free to read online)
Cover of book “Deep JavaScript”
Book (50% free online)
Cover of book “Tackling TypeScript”
Book (first part free online)
Logo of newsletter “ news”
Newsletter (free)

Perl and Python influences in JavaScript

[2013-02-24] esnext, dev, javascript, jslang
(Ad, please don’t block)

If you search the Mozilla Central code base for the texts "Perl" and "Python" (don’t ignore case) then the comments mention what methods have been borrowed from those languages. The paths mentioned below are relative to /js/src/.
[Inspiration: a blog post by Ziyun Fei.]

Perl influences in ECMAScript 5

String (jsstr.cpp):
  • String.prototype.match()
  • String.prototype.replace()
  • String.prototype.split()
  • String.prototype.substr()
Array (jsarray.cpp):
  • Array.prototype.join()
  • Array.prototype.reverse()
  • Array.prototype.sort()
  • Array.prototype.push()
  • Array.prototype.pop()
  • Array.prototype.shift()
  • Array.prototype.unshift()
  • Array.prototype.splice()
RegExp (builtin/RegExp.cpp): generally Perl-inspired, one comment attests to that fact.

Python influences in ECMAScript 5

String (jsstr.cpp):
  • String.prototype.concat()
  • String.prototype.slice()
  • String.prototype.match()
Array (jsarray.cpp):
  • Array.prototype.concat()
  • Array.prototype.slice()

ECMAScript 6

ECMAScript 6 was influenced by several languages. Examples:
  • Arrow functions [1] and classes [2] were inspired by CoffeeScript.
  • Generators [3] were inspired by Python.


  1. ECMAScript 6: arrow functions and method definitions
  2. ECMAScript 6: classes
  3. Iterators and generators in ECMAScript 6