举个例子,假设有个对象,他叫objA, 技能是说hello,他喜欢的女生叫小花,但是他是一个花心的人!

objA = {
name: 'objA ',
sayHello_ () {
console.log('hello')
},
love: '小花',
personality: '花心'
}
然后,又有一个对象,她叫objB, 技能是说world

objB = {
name: 'objB',
sayWorld () {
console.log('world')
}
}
然后现在想把objB 去 objA 家里玩!然后objA, 学会了objB的说world的技能,并且他爱上了objB,并且变得专一了。(而你就是定这个命运的人)

objA = {
name: 'objA',
sayHello_ () {
console.log('hello')
},
sayWorld () {
console.log('world')
},
love: 'objB',
personality: '专一'
}
同理,让我们用代码来看待这件事情!让objB 和 objA 合并,如果用到Vue实例上,就等同于我们写了这么一堆函数:(我们以【name, love, personality】举例吧!毕竟代码越少越好)

import Vue from 'vue'

Vue.config.optionMergeStrategies.name = function (from, self) {
return self.name ? self.name : from.name
}

Vue.config.optionMergeStrategies.love = function (from, self) {
return from.love ? from.love: self.love
}

Vue.config.optionMergeStrategies.personality = function (from, self) {
return self.personality === '花心' ? '专一' : '花心'
}

new Vue({
el: '#app',
...
})
组件A

<script>
import B from './components/B.js'

export default {
mixins: [B],
name: 'objA',
love: '小花',
personality: '花心',
created (http://www.my516.com) {
console.log(this.$options.name)
console.log(this.$options.love)
console.log(this.$options.personality)
},
...
}
</script>
B.js

export default {
name: 'objB'
}
当然,vue自身所有的option都有自己的合并策略,有兴趣的同学可以去读一读它的源码!

---------------------

Vue.config.optionMergeStrategies 用法分析的更多相关文章

  1. Vue.js 源码分析(二十五) 高级应用 插槽 详解

    我们定义一个组件的时候,可以在组件的某个节点内预留一个位置,当父组件调用该组件的时候可以指定该位置具体的内容,这就是插槽的用法,子组件模板可以通过slot标签(插槽)规定对应的内容放置在哪里,比如: ...

  2. Vue.js 源码分析(二十二) 指令篇 v-model指令详解

    Vue.js提供了v-model指令用于双向数据绑定,比如在输入框上使用时,输入的内容会事实映射到绑定的数据上,绑定的数据又可以显示在页面里,数据显示的过程是自动完成的. v-model本质上不过是语 ...

  3. Vue.js 源码分析(二) 基础篇 全局配置

    Vue.config是一个对象,包含Vue的全局配置,可以在启动应用之前修改下列属性,如下: ptionMergeStrategies        ;自定义合并策略的选项silent         ...

  4. 【Vue学习笔记1】全局配置 Vue.config

    1.slient 类型:boolean: 默认:false: 用法:Vue.config.silent = true  用于取消 Vue 所有的日志与警告

  5. 浅谈Spring框架注解的用法分析

    原文出处: locality 1.@Component是Spring定义的一个通用注解,可以注解任何bean. 2.@Scope定义bean的作用域,其默认作用域是”singleton”,除此之外还有 ...

  6. Vue.js 源码分析(三十一) 高级应用 keep-alive 组件 详解

    当使用is特性切换不同的组件时,每次都会重新生成组件Vue实例并生成对应的VNode进行渲染,这样是比较花费性能的,而且切换重新显示时数据又会初始化,例如: <!DOCTYPE html> ...

  7. Vue.js 源码分析(三十) 高级应用 函数式组件 详解

    函数式组件比较特殊,也非常的灵活,它可以根据传入该组件的内容动态的渲染成任意想要的节点,在一些比较复杂的高级组件里用到,比如Vue-router里的<router-view>组件就是一个函 ...

  8. Vue.js 源码分析(二十九) 高级应用 transition-group组件 详解

    对于过度动画如果要同时渲染整个列表时,可以使用transition-group组件. transition-group组件的props和transition组件类似,不同点是transition-gr ...

  9. Vue.js 源码分析(二十八) 高级应用 transition组件 详解

    transition组件可以给任何元素和组件添加进入/离开过渡,但只能给单个组件实行过渡效果(多个元素可以用transition-group组件,下一节再讲),调用该内置组件时,可以传入如下特性: n ...

随机推荐

  1. 【转】 Linux 命令解释(Linux基础二)

    前言 对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务.开放更多的端口,这对服务器的稳定性和安全性都有负面影响.其实,服务器是一个连显示器都没有的家伙,要图形界面干十么? 说到这里,有 ...

  2. CET-6 分频周计划生词筛选(Week 2)

    点我阅读 Week 2 2016.09.04/05 p58 ongoing / forward p59 prosperity p60 rear p61 rival + segregation + se ...

  3. upc组队赛15 Lattice's basics in digital electronics【模拟】

    Lattice's basics in digital electronics 题目链接 题目描述 LATTICE is learning Digital Electronic Technology. ...

  4. cpupower:Shows and sets processor power related values

    软件包: * sys-power/cpupower Latest version available: Latest version installed: Size of files: KiB Hom ...

  5. python 装饰器 第六步:带有收集参数的函数的装饰器

    #第六步:带有收集参数的函数的装饰器 #装饰器函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(*w,**n): #以下三步就是扩展之后的功能,于是 ...

  6. 公司redis

    一: redis cluster介绍篇 1:redis cluster的现状 目前redis支持的cluster特性(已亲测): 1):节点自动发现 2):slave->master 选举,集群 ...

  7. python基础----以面向对象的思想编写游戏技能系统

    1. 许多程序员对面向对象的思想都很了解,并且也能说得头头是道,但是在工作运用中却用的并不顺手. 当然,我也是其中之一. 不过最近我听了我们老师的讲课,对于面向对象的思想有了更深的理解,今天决定用一个 ...

  8. 关于sizeof的几个问题

    #include <stdio.h> #include <stdlib.h> int main(int argc, char const *argv[]) { char *ps ...

  9. boby标签中相关标签

    有关字体相关的标签 h1~h6   字体大小 标题使用<h1>至<h6>标签进行定义,<h1>定义最大的标题,<h6>定义最小的标题.具有 align属 ...

  10. JavaScript学习笔记(基础部分)

    一.JavaScript简介: 概念:JavaScript是一种解释性的.跨平台的.基于对象的脚本语言,一般用于客户端来给HTML页面增加动态的功能. 组成: 1.ECMAScript,描述了该语言的 ...