diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 10dcf2126b..a50a86e2f3 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -425,16 +425,9 @@ export default function dom( `); } - const prop_names = x`{}` as ObjectExpression; - - // TODO find a more idiomatic way of doing this - props.forEach(v => { - prop_names.properties.push( - v.name === v.export_name - ? p`${v.name}: 0` - : p`${v.export_name}: "${v.name}"` - ); - }); + const prop_names = x`{ + ${props.map(v => p`${v.export_name}: ${v.export_name === v.name ? 0 : x`"${v.name}"`}}`)} + }` as ObjectExpression; if (options.customElement) { const declaration = b` diff --git a/src/runtime/internal/Component.ts b/src/runtime/internal/Component.ts index 483aec93bc..9e0c2e58f2 100644 --- a/src/runtime/internal/Component.ts +++ b/src/runtime/internal/Component.ts @@ -22,7 +22,7 @@ interface T$$ { } export function bind(component, name, callback) { - if (name in component.$$.props) { + if (component.$$.props.hasOwnProperty(name)) { name = component.$$.props[name] || name; component.$$.bound[name] = callback; callback(component.$$.ctx[name]);