Vue.js基础-13-混入对象(应用示例,同名函数优先级,选项合并,选项优先级,全局混入,Vue.mixin)

文章目录

  • 1. 混入对象
    • 1.1 简单应用
      • 语法示例
      • 完整示例
    • 1.2 定义一个组件引用混入对象
      • 语法示例
      • 完整示例
    • 2.3 混入对象使用函数
      • 示例(在混入对象中直接定义函数)
      • 示例(混入对象引用methods中函数)
  • 2. 同名函数优先级(vue实例 VS 混入对象)
    • 2.1 选项合并(实例下直接选项)
      • 说明
      • 完整示例
    • 2.2 选项优先级(实例下methods的选项)
      • 说明
      • 完整示例
  • 3. 全局混入

1. 混入对象

1.1 简单应用

语法示例

  • 定义混入对象
      var 混入对象名 = {
        created: 操作
      };
  • 组件中引用混入对象
      new Vue({
        component: {
          mixins: [混用对象名],
        }

完整示例

DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-songtitle>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <div id="databinding">div>


    <script type="text/javascript">
      new Vue({
        el: "#databinding",
        component: {
          mixins: [myMixin],
        }
      });
      // 定义一个混入对象
      var myMixin = {
        created: document.write("混入实例"),
      };

    script>
  body>
html>

1.2 定义一个组件引用混入对象

语法示例

  • 定义混入对象
      var 混入对象名 = {
        created: 操作
      };
  • 定义一个组件来扩展vue实例
      var 组件名 = Vue.extend({
        mixins: [myMixin],
      });
  • 初始化组件实例
new 组件名();

完整示例

DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-songtitle>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <div id="databinding">div>
    <script type="text/javascript">
      var vm = new Vue({
        el: "#databinding",
      });
      // 定义一个混入对象
      var myMixin = {
        created: document.write("混入实例"),
      var Component = Vue.extend({
        mixins: [myMixin],
      });
      new Component();
    script>
  body>
html>

2.3 混入对象使用函数

示例(在混入对象中直接定义函数)

将上例替换如下:

      var myMixin = {
        created: function () {
          document.write("混入实例");
        },
      };

示例(混入对象引用methods中函数)

DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-songtitle>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <div id="databinding">div>
    <script type="text/javascript">
      var vm = new Vue({
        el: "#databinding",
        data: {},
        methods: {},
      });
      var myMixin = {
        created: function () {
          //引用methods中函数
          this.startmixin();
        },
        methods: {
          startmixin: function () {
            document.write("混入实例");
          },
        },
      };
      var Component = Vue.extend({
        mixins: [myMixin],
      });
      var component = new Component();
    script>
  body>
html>

2. 同名函数优先级(vue实例 VS 混入对象)

2.1 选项合并(实例下直接选项)

说明

Vue 实例与混入对象包含了相同的方法。两个函数将合并,并且一起输出。

完整示例

DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-宋title>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <div id="databinding">div>
    <script type="text/javascript">
      var mixin = {
        created: function () {
          document.write("混入调用" + "
"
); }, }; new Vue({ mixins: [mixin], created: function () { document.write("组件调用" + "
"
); }, });
script> body> html>
  • 结果输出
混入调用
组件调用

2.2 选项优先级(实例下methods的选项)

说明

Vue实例和混入对象实例中的methods下有同名函数,则Vue实中的methods下的同名函数优先级高

完整示例

说明:

  • 混入对象:methods中包含两个方法,一个无同名的(mixinfunction),一个和vue实例中同名的(samemethod)。
  • vue实例:methods包含两个方法,一个无同名的(vmfunction),一个和混入对象中同名的(samemethod)。

按预期,mixinfunction、vmfunction和vue实例中的 samemethod 将被打印出来

  • 代码
DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-SONGtitle>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <div id="databinding">div>
    <script type="text/javascript">
      var mixin = {
        methods: {
          mixinfunction: function () {
            document.write("混入对象中的方法" + "
"
); }, samemethod: function () { document.write("混入对象中的同名方法" + "
"
); }, }, }; var vm = new Vue({ mixins: [mixin], methods: { vmfunction: function () { document.write("Vue实例中的方法" + "
"
); }, samemethod: function () { document.write("Vue中同名方法" + "
"
); }, }, }); vm.mixinfunction(); vm.vmfunction(); vm.samemethod();
script> body> html>
  • 结果显示
混入对象中的方法
Vue实例中的方法
Vue中同名方法

3. 全局混入

  • 完整代码
DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>CROW-SONGtitle>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
  head>
  <body>
    <script type="text/javascript">
      // 为自定义的选项 'myOption' 注入一个处理器。
      Vue.mixin({
        created: function () {
          var myOption = this.$options.vueOption; 
          document.write(myOption);          
        },
      });

      new Vue({
        vueOption: "HELLO !",
      });

    script>
  body>
html>
  • 结果显示
HELLO !

你可能感兴趣的:(#,vue框架学习,vue.js,javascript,前端,混入对象,优先级)