В чем смысл свойства auto?

Я предложил бы альтернативу regex, с помощью подгрупп для получения имени и значения параметров индивидуально:

function getUrlParams(url) {
  var re = /(?:\?|&(?:amp;)?)([^=&#]+)(?:=?([^&#]*))/g,
      match, params = {},
      decode = function (s) {return decodeURIComponent(s.replace(/\+/g, " "));};

  if (typeof url == "undefined") url = document.location.href;

  while (match = re.exec(url)) {
    params[decode(match[1])] = decode(match[2]);
  }
  return params;
}

var result = getUrlParams("http://maps.google.de/maps?f=q&source=s_q&hl=de&geocode=&q=Frankfurt+am+Main&sll=50.106047,8.679886&sspn=0.370369,0.833588&ie=UTF8&ll=50.116616,8.680573&spn=0.35972,0.833588&z=11&iwloc=addr");

result объект:

{
  f: "q"
  geocode: ""
  hl: "de"
  ie: "UTF8"
  iwloc: "addr"
  ll: "50.116616,8.680573"
  q: "Frankfurt am Main"
  sll: "50.106047,8.679886"
  source: "s_q"
  spn: "0.35972,0.833588"
  sspn: "0.370369,0.833588"
  z: "11"
}

regex ломается следующим образом:

(?:            # non-capturing group
  \?|&         #   "?" or "&"
  (?:amp;)?    #   (allow "&", for wrongly HTML-encoded URLs)
)              # end non-capturing group
(              # group 1
  [^=&#]+      #   any character except "=", "&" or "#"; at least once
)              # end group 1 - this will be the parameter's name
(?:            # non-capturing group
  =?           #   an "=", optional
  (            #   group 2
    [^&#]*     #     any character except "&" or "#"; any number of times
  )            #   end group 2 - this will be the parameter's value
)              # end non-capturing group
16
задан Cheezmeister 22 February 2011 в 03:41
поделиться

1 ответ

  1. свойства позволяют вам добавить инкапсуляцию в ваш класс.
  2. свойства позволяют вашему доступу быть полиморфным (наследники могут изменять доступ, если свойство виртуальное), если вы того пожелаете.
  3. Авто-свойства хороши, когда вы имеете дело с простыми операциями get / set. если вы выполняете более сложные операции внутри вашего get / set, то вы не можете использовать auto-свойство.

Кроме того, отражение не работает по-другому на свойствах, чем на переменные, хотя, вы работаете с MemberInfo (FieldInfo, PropertyInfo или MethodInfo, какой бы вы ни выбрали).

2
ответ дан 30 November 2019 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: