Сочетание сокращенного свойства и остатка: {type, which, selected: {& hellip; selected, & hellip; hovered}}: что здесь происходит?

<?php
$selfClosing = explode(',', 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed');

$html = '
<p><a href="#">foo</a></p>
<hr/>
<br/>
<div>name</div>';

$dom = new DOMDocument();
$dom->loadHTML($html);
$els = $dom->getElementsByTagName('*');
foreach ( $els as $el ) {
    $nodeName = strtolower($el->nodeName);
    if ( !in_array( $nodeName, $selfClosing ) ) {
        var_dump( $nodeName );
    }
}

Выход:

string(4) "html"
string(4) "body"
string(1) "p"
string(1) "a"
string(3) "div"

В основном просто определяют имена узлов узлов, которые закрываются самостоятельно, загружают всю строку html в библиотеку DOM, захватывают все элементы, перебирают и отфильтровывают которые не закрываются и не работают на них.

Я уверен, что вы уже знаете, что вам не следует использовать регулярное выражение для этой цели.

0
задан Cerulean 17 January 2019 в 16:10
поделиться

3 ответа

Вы создаете новый объект, используя type, wich, selected и hovered

const type = 'value of type';
const which = 'value of which';
const selected = {propOfSelected:'value1',sharedProp:'value1'};
const hovered = {sharedProp:'value2',newProp:'value of new prop'};
console.log({ type, which, selected: { ...selected, ...hovered } })

[1110 ] Более подробную информацию об этом можно найти здесь

0
ответ дан HMR 17 January 2019 в 16:10
поделиться

Похоже,

{ type, which, selected: { ...selected, ...hovered } } 

некоторые переменные объединены в один объект, как

  • type
  • which
  • [ 1111] новый объект selected со свойствами
    • selected, который содержит объект
    • hovered, который также содержит объект
    [1111 ]

со свойствами сокращения и расширенным синтаксисом ... для объектов.

0
ответ дан Nina Scholz 17 January 2019 в 16:10
поделиться

Выражение

{ type, which, selected: { ...selected, ...hovered } }

почти 1 эквивалентно

{
    "type": type,
    "which": which,
    "selected": Object.assign({}, selected, hovered)
}

, где type, which, selected и [ 115] являются локальными переменными. Другими словами, "type" и "which" задаются с помощью сокращения свойства , а "selected" указывается явно как поверхностное слияние selected и hovered.


1 Я говорю «почти», потому что Object.assign запускает установщики свойств, а ... синтаксис расширения объекта - нет.

0
ответ дан Igor Raush 17 January 2019 в 16:10
поделиться
Другие вопросы по тегам:

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