GCC 编译器是否关心我们将属性语句放在声明中的位置?例如,以下是等效的:
void foobar (void) __attribute__ ((section ("bar")));
__attribute__ ((section ("bar"))) void foobar (void);
Run Code Online (Sandbox Code Playgroud)
我在这里看到它们的使用方式没有约定。有时在声明之前,有时在声明之后。
defineProperties(Element.prototype, {
querySelector: {
value: querySelectorPatched,
writable: true,
enumerable: true,
configurable: true,
},
querySelectorAll: {
value(this: HTMLBodyElement): NodeListOf<Element> {
const nodeList = arrayFromCollection(
elementQuerySelectorAll.apply(this, ArraySlice.call(arguments) as [string])
);
if (!featureFlags.ENABLE_NODE_LIST_PATCH) {
const filteredResults = getFilteredArrayOfNodes(
this,
nodeList,
ShadowDomSemantic.Disabled
);
return createStaticNodeList(filteredResults);
}
return createStaticNodeList(
getFilteredArrayOfNodes(this, nodeList, ShadowDomSemantic.Enabled)
);
},
writable: true,
enumerable: true,
configurable: true,
},
});
Run Code Online (Sandbox Code Playgroud)
我想在这里理解以下 Typescript 代码的这一部分:
value(this: HTMLBodyElement): NodeListOf<Element>
Run Code Online (Sandbox Code Playgroud)
我相信这段代码重写了标准querySelectorAll方法。但该方法是在 an 上定义的,但函数中的Element值为。这是否意味着只能从元素调用该方法?或者也许它是从 调用然后投射到?有人可以解释一下这段代码的逻辑吗?这是以下存储库的一部分。thisHTMLBodyElementbodyElementHTMLBodyElement