- From: Joe Pea <notifications@github.com>
- Date: Tue, 13 Feb 2018 06:44:39 +0000 (UTC)
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/716/365166602@github.com>
> What on earth would happen in this situation:
Just like with variable shadowing in practically any programming language, then in that case that `<link>` is no longer the sort of `<link>` from the outer scope, and it will not pull in the stylesheet, unless the Custom Element implements that.
```js
const foo = "foo"
~function() {
const foo = "bar"
console.log(foo)
// is "foo" here the same "foo" as outside? Nope, not any more, we're in a new scope!
}()
```
Same thing for elements! If you override a "variable" (in this case an element name) in the inner scope, then it is no longer what it was in the outer scope.
> ` <override element="input">`
But, that's in global scope. Overriding should only be possible in non-global scope. Maybe, `<override element="XXX">` is something that could work, as it can signal the parser not to do certain things if `xxx` is `tr`, for example.
But then again, I don't like redundancy, I like things DRY.
Imagine if this was required in JavaScript:
```js
const foo = "foo"
~function() {
override foo;
const foo = "bar"
console.log(foo)
}()
```
I would not prefer a similar thing for HTML name scope. But, what if an HTML/CSS no-JS person looks at the markup? They might get confused? True! I would probably not want to do that, just like I don't override globals in JS. What it would really be useful for is, for example, coming up with new element names that don't already exist (like `<node3d>` or `<magic>`), and then if the browser _by chance_ introduces one of those names, oh well, then the component will just work, and everyone can be happy. If a component wasn't using a yet-to-exist `<magic>` element before, but rather a custom element called `<magic>`, then, who cares if the browser introduces a new `<magic>` element later, as long as that component continues to work. Some other component can decide to use the builtin `<magic>` element by not overriding it.
I find myself in situation where I'm forced to think of another word to add to a single-word component, just to appease the hyphen rule. Sometimes I do something stupid like `<stu-pid>` just to do it, which is awkward.
So my argument isn't leaning toward overriding certain builtins (though I can imagine that if someone wanted to implement a "super link" that worked, plus did much more, and making it painless to adopt by overriding the builtin in one, then why not?
Personally, I just want to use single words when I want to.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/716#issuecomment-365166602
Received on Tuesday, 13 February 2018 06:51:58 UTC