16-让this指向自定义对象

export {}

type ObjType = {
    name: string
    Person: (name: string) => void
}

let obj: ObjType = {
    name: 'obj',
    Person: () => {}
}

// 定义函数的时候,this的类型必须和调用的时候的类型一致
// 
// this:Window | ObjType 可以给多种类型所对应的对象,让this去指向
function Person(this:Window | ObjType, name: string) {
    this.name = 'person'
}

obj.Person = Person
obj.Person('kaimo')

window.Person = Person
window.Person('kaimo')
### element-ui el-date-picker 自定义内容 在 `el-date-picker` 中实现自定义显示内容,通常涉及修改默认模板或通过插槽(slot)机制注入额外的内容。为了更好地理解这一过程,下面提供了一个具体的例子。 #### 使用作用域插槽定制日期选择器面板内的内容 Element UI 的 `el-date-picker` 支持作用域插槽功能,允许开发者向组件内部插入自定义 HTML 和逻辑。具体来说,在 `<template>` 标签中使用具名插槽可以覆盖原有结构的一部分: ```html <el-date-picker v-model="value" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> <!-- 插入到日历头部 --> <template slot="header" scope="{ prevYear, nextYear, prevMonth, nextMonth }"> <button @click="prevYear">上一年</button> <button @click="nextYear">下一年</button> <span>{{ year }}年{{ month + 1 }}月</span> <button @click="prevMonth">上一月</button> <button @click="nextMonth">下一月</button> </template> <!-- 修改周标签 --> <template slot="week-header" scope="{ weekNames }"> <th v-for="(name, index) in ['周一', '周二', '周三', '周四', '周五', '周六', '周日']" :key="index">{{ name }}</th> </template> <!-- 日单元格内容重写 --> <template slot="default" scope="{ date, data }"> {{ data.text }} <div v-if="isSpecialDay(date)">特殊标记</div> <!-- 条件渲染某些天数下的特别提示 --> </template> </el-date-picker> ``` 上述代码片段展示了如何利用作用域插槽来自定义 `el-date-picker` 的不同部分[^2]。这里不仅改变了月份导航按钮的位置和样式,还替换了原有的星期名称,并且为特定的日子添加了额外的信息展示区域。 对于更复杂的场景,比如想要完全替换整个弹窗界面,则可能需要考虑创建一个新的 Vue 组件并继承原生的选择框行为,但这超出了简单配置层面的操作范畴。 #### 动态调整 picker-options 配置项 当尝试将 `pickerOptions` 属性放置于 `data()` 函数返回的对象里时会遇到上下文丢失的问题,即 `this` 关键字不再指向当前 Vue 实例。为了避免这种情况发生,建议采用计算属性的方式处理这些选项,从而确保能够访问到最新的实例状态[^1]。 ```javascript export default { computed: { dynamicPickerOptions() { return { disabledDate(time) { const today = new Date(); // 只能选今天之后的日期 return time.getTime() < today; }, shortcuts: [{ text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }] }; } } }; ``` 这样做的好处是可以随时根据应用的状态变化灵活改变可用的时间区间或其他交互特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯小默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值