this.name的值应该是一个不固定的值
Opened this issue · 3 comments
Froguard commented
你好,如下代码中,如果想要在header组件的代码的this对象上,获取到name,目前获取不到,如果在header组件定义时候没写的话,是undefined
app.js
App.component('top-header', header);
header.js
let header = Regular.extend({
//name: 'header',
config(){
console.log(this.name);// undefined
},
//...
});
期望结果:
header.js中的 this.name
将得到 top-header
fengzilong commented
可以加个$name方法,this.name可能和用户自己定义的this.name冲突了
Froguard commented
@fengzilong
哦,这个到不单单是为了解决冲突的问题,而是想象中,我更倾向于觉得 this.name
应该设计成灵活的精确的或者叫自动的,亦或者说官方的
,而不是开发者取巧的方式去实现它本来就应该提供的一个特性。作为库自己的一个特性存在。
类似的举个例子,js中function的name
值会根据情况(例如function的定义写法不同,挂载对象,bind使用等等),而返回不同的值。这个是其特性,或者说叫原始设计。即使理论上说,开发者也是可以通过Object.defineProperty()这类方式去改变这个name值。但是这个灵活特性应该不由用户去实现。
这样说会不会有点偷懒耍赖皮,:smile:
fengzilong commented
我指的就是官方加啊,如果要加这个特性的话
但不能保证this.name
没有被开发者使用,可能一些老代码会遇到一些意外的状况😥
看一个例子
const A = Regular.extend( {
name: 'A',
init() {
console.log( this.name );
}
} );
const B = Regular.extend().component( 'B', A );
new A( {
name: 'C'
} );
this.name
,应该是A、B还是C,这个优先级也要考虑
我还是偏向于加个this.$name
方法用来获取组件名字而不是this.name