Vue.component('my-component', {props: {// 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)propA: Number,// 多个可能的类型propB: [String, Number],// 必填的字符串propC: {type: String,required: true},// 带有默认值的数字propD: {type: Number,default: 100},// 带有默认值的对象propE: {type: Object,// 对象或数组默认值必须从一个工厂函数获取default: function () {return { message: 'hello' }}},// 自定义验证函数propF: {validator: function (value) {// 这个值必须匹配下列字符串中的一个return ['success', 'warning', 'danger'].indexOf(value) !== -1}}}
})

动态 Prop
prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。(vue 2.0以后的属性),
当 prop 验证失败的时候,(开发环境构建版本的) Vue 将会产生一个控制台的警告。
type 可以是下面原生构造器:
String
Number
Boolean
Array
Object
Date
Function
Symbol

一共8种类型

Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。
声明方法:let id = Symbol("id“);
Symbol 数据类型的特点是唯一性,即使是用同一个变量生成的值也不相等。
let id1 = Symbol(‘id’);
let id2 = Symbol(‘id’);
console.log(id1 == id2); //false
有点像[] (嗯 你可以试试 [][][]===[])
ymbol 数据类型的另一特点是隐藏性,for···in,object.keys() 不能访问

let id = Symbol("id");let obj = {[id]:'symbol'};for(let option in obj){console.log(obj[option]); //空}

但是也有能够访问的方法:Object.getOwnPropertySymbols
Object.getOwnPropertySymbols 方法会返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。

let id = Symbol("id");let obj = {[id]:'symbol'};
let array = Object.getOwnPropertySymbols(obj);console.log(array); //[Symbol(id)]console.log(obj[array[0]]);  //'symbol'
————————————————

原文链接
嗯 Symbols 这个属性是ES6 新引入的
(ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因)
嗯 这个大概就是原因了

let mySymbol = Symbol();// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';// 第二种写法
let a = {[mySymbol]: 'Hello!'
};// 第三种写法
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });// 以上写法都得到同样结果
a[mySymbol] // "Hello!"

上面代码通过方括号结构和Object.defineProperty,将对象的属性名指定为一个 Symbol 值。

注意,Symbol 值作为对象属性名时,不能用点运算符。

参考ES6 官网

我是菜鸟。。我在飞。。。

vue 动态 Prop相关推荐

  1. Vue.js Prop

    Prop 的大小写 (camelCase vs kebab-case) HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用 DOM 中的模板时,camel ...

  2. vue动态设置文字布局方式_详解Vue动态添加模板的几种方法

    动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...

  3. vue的Prop属性

    转载自  Prop Prop 的大小写 (camelCase vs kebab-case) HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用 DOM 中 ...

  4. Vue的Prop配置

    文章目录 1.Prop 的大小写 2.Prop 类型 3.Prop验证 4.传递静态|动态 Prop 5.修改Prop数据 适用于:父子组件通信. 如果父组件给子组件传递(函数)数据:本质是子组件给父 ...

  5. 使用Vue动态生成form表单的实例代码

    具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流: ...

  6. vue动态切换css文件_vue实现样式之间的切换及vue动态样式的实现方法

    编程之家收集整理的这篇文章主要介绍了vue实现样式之间的切换及vue动态样式的实现方法,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 前言 既然我们选择了vue,那么在做东西时就不要想 ...

  7. vue 动态修改路由参数

    转载自  vue 动态修改路由参数 import merge from 'webpack-merge':修改原有参数 this.$router.push({query:merge(this.$rout ...

  8. vue 动态组件组件复用_真正的动态声明性组件

    vue 动态组件组件复用 在这篇简短的文章中,我将重点介绍ADF动态声明性组件. 我的意思是一个众所周知的ADF标签af:declarativeComponent . 它可以用作将页面设计为页面片段和 ...

  9. [vue] 动态给vue的data添加一个新的属性时会发生什么?怎样解决?

    [vue] 动态给vue的data添加一个新的属性时会发生什么?怎样解决? 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新.如果想要使添加的值做到响应式,应当使用$set()来添加对象. ...

最新文章

  1. 你熟知的那个杀毒软件公司McAfee,用这种方法骗过护照人脸识别系统
  2. MATLAB中 raw(,利用Photoshop + Matlab 解析10-bit RAW
  3. 借助 IIS 管理器 -- 用手机测试HTML页面
  4. 由STGW下载慢问题引发的网络传输学习之旅
  5. linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc
  6. 神经网络推理_分析神经网络推理性能的新工具
  7. Node.js模块以及模块加载机制
  8. fstream下的读写操作
  9. java设计思想和设计模式,快来收藏!
  10. linux 多网卡多路由表实现策略路由
  11. 硬着头皮,爬上龙门吊
  12. 国际刑警组织来取经,阿里已成中国打假名片
  13. 追星女孩彩虹屁情话土味情话合集100条
  14. 常见的网络攻击方法与防范措施
  15. visio画图复制粘贴到word_VISO复制到WORD中全是空白框
  16. android 修改充电图标,更换图标、修改充电音...这个软件把iPhone玩成了安卓
  17. ISO 18184纺织品抗病毒活性的测定
  18. 集合类 CList的使用
  19. 厦理OJ——1003:第三届程序设计大赛 让气球飞起来
  20. 人脸识别技术开发解决方案,人脸识别智慧校园应用开发

热门文章

  1. python spearman相关系数_常用的特征选择方法之 Spearman 秩相关系数
  2. 替身机器人,看我用脑电波控制你
  3. Node.js 第一天
  4. python修改excel表格_python操作excel表格(xlrd/xlwt)以及表格的修改(OpenPyXL)
  5. workstation安装Windows Server 2016
  6. 前度控制器源代码分析
  7. 游戏云服务器应该怎么选
  8. hapi_带有节点和Hapi后端的Angular文件上传
  9. 多个pdf怎么合并成一个pdf?多个pdf文件怎么合并成一个文件?
  10. ceph 集群报 mds cluster is degraded 故障排查