Vue extends 传入构造函数

今天同事问我"官网上说 extends 可以传构造函数, 知不知道怎么写?"

查阅了一下官网, 发现对此的介绍仅限于"可以是一个构造函数", 此外并没有案例
于是在此写下 demo, 减轻同事摸脑壳的烦恼


官网介绍

允许声明扩展另一个组件 (可以是一个简单的选项对象或构造函数)。这主要是为了便于扩展单文件组件。

extends 用于扩展组件, 用法与 mixins 相似, 都是在一个组件中传入扩展的内容

而 extends 与 mixins 的差别在于

  • extends 只能传入 1 个扩展内容(mixins 通过数组格式, 可以传入多个)
  • 除了 mixins 也接受的 Object 类型(严格来说是 Object 组成的数组), extends 还能接受构造函数类型

demo

既然说好是构造函数, 那格式肯定是这样的

{
	extends: new function() {
		this.name = value
	}
}

反复几次试验后, 发现 name 指代组件的属性名, value 指代该属性的值

实际应用大致如下例所示

var CompA = {
	extends: new function() {
		this.template = "<div>{{e}}, {{c}}</div>"
		this.data = function() {
			return {
				e: "来自 extends 传入的构造函数中的数据"
			}
		}
		this.created = function() {
			console.log("来自 extends 传入的构造函数中的 created")
		}
	},
	data: function() {
		return {
			c: "来自 CompA 自己的数据"
		}
	},
	created() {
		console.log("来自 CompA 自己的 created")
	},
};

当然这种小问题, 大佬是一眼识破的, 记录下来仅为防止笔者一时失忆

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值