Я думаю, вы получили все возможные технические ответы. Я подробно остановлюсь на том, что я считаю лучшим подходом к этому языку.
Прототипы не рекомендуются для языка ООП, такого как AS3 (в основном потому, что они не поддаются инкапсуляции). Вы подразумеваете, что не хотите, чтобы что-то «сбивало с толку других» (по отношению к split.join); Что ж, прототипы в AS3 очень запутанные.
Как пример этого, объявление прототипа может быть сделано из любого места в вашем коде, и поэтому не очевидно, где оно должно находиться. Если «другие» сталкиваются с «foo» .replaceAll () в вашем коде, совершенно не очевидно, где можно найти этот метод и проверить, что он действительно делает.
Статическая функция исправляет это и довольно проста. Конечно, вам нужен дополнительный аргумент, и вы не можете правильно связать, но разве это плохо?
Если вам нужна производительность, рекомендуется использовать split.join. Я бы поспорил на хорошие деньги, которые больше разработчиков AS3 знают о split.join, чем об использовании прототипов.
С другой стороны, я думаю, что наиболее семантическим и прагматичным способом было бы использование метода собственного языка (отсюда мой предыдущий ответ). Вы пытаетесь заменить все иглы в строке другой строкой в AS3, и для этого у языка есть метод String :: replace с глобальным флагом. Я почти уверен, что есть способ легко разобрать и использовать любую строку в регулярном выражении.
Я согласен, что в некоторых случаях может потребоваться вспомогательный метод (например, replaceAll), но я настоятельно рекомендую вам не использовать прототипы, а вместо этого использовать более стандартный способ, такой как StringUtil.replace.