Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.
  • Форумы
  •  » Разработка
  •  » Допустимость реализации "вручную" некоторых фич стандарта языка (+)

№115-01-2011 21:09:49

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 3.6

Допустимость реализации "вручную" некоторых фич стандарта языка (+)

Ситуация: разрабатывается расширение, в котором явно напрашивается использование некоторых фич JavaScript 1.8.5, особенно - использование bind() в callbacks для передачи контекста. Стандарт JS 1.8.5 вводится начиная с Gecko 2/Fx 4.0. Релиз 4-ки ещё не вышел, да и пользователей более ранних версий даже чисто теоретически не хотелось бы оставлять за бортом. Имеются 2 выхода из ситуации:

1) ручная имплементация bind:

Выделить код

Код:

Function.prototype.bind=function(scope)
{
    var fn=this;
    return function()
    {
        return fn.apply(scope,arguments);
    };
};

2) использование старого костыля а-ля var that=this.

Второй вариант не хочется использовать, потому как это старый костыль, запутывающий код, и плохочитабельный. Сомнения относительно первого варианта базируются на том соображении, что callbacks используются в скриптах браузерного оверлея, и модификация свойств глобальных объектов трудно предсказуема по части поведения других расширений (не говоря уже о том, что требования к разработке однозначно указывают экранировать через namespaces свои программные единицы). В общем, вопрос данного топика - не столько о решении проблемы, сколько о приемлемой методологии решения.

Отредактировано hydrolizer (15-01-2011 21:10:56)

Отсутствует

 

№215-01-2011 21:21:50

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
UA: Firefox 3.6
Веб-сайт

Re: Допустимость реализации "вручную" некоторых фич стандарта языка (+)

А чем такой способ не нравится?

Выделить код

Код:

if (!Function.bind) {
  Function.prototype.bind = ...
}

Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№315-01-2011 22:40:26

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 3.6

Re: Допустимость реализации "вручную" некоторых фич стандарта языка (+)

Это практически то же, что я выше и привел - просто я для краткости многие нюансы опустил, полная реализация bind() ведь занимает намного больше кода. И, опять же, выше я писал, что именно этот вариант лично меня устраивает более чем - просто хотелось бы знать, насколько подобное внедрение функциональности в глобальные объекты соответствует требованиям к разработке. Ну, допустим, если это попадёт на AMO :)

Отсутствует

 
  • Форумы
  •  » Разработка
  •  » Допустимость реализации "вручную" некоторых фич стандарта языка (+)

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]