javascript - 关于Vue插件中prototype和全局mixin选择的问题
大家讲道理
大家讲道理 2017-04-11 12:23:01
[JavaScript讨论组]

现在的场景是想要在每个组件内调用一个方法一个对象就是以:

this.fun()
this.ajaxLib.xxx()

针对这种结果,在Vue的插件写法中有两种写法

Myplugins.install = (Vue) => {
    // 1
    Vue.prototype.fun = () => {}
    // 2
    Vue.mixin({
        methods: {
            fun () {}
        }
    })
}

想问下这两种方式推荐哪种,区别又是什么?mixin的形式会加大内存占用量吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
PHPz

1. 从代码上说:

Vue.mixin 方式实质就是就是在 vue 初始化对象的时候,把 Vue.mixin 的参数 复制到了初始化对象中(具体可以参考源码),代码简化如下:

function Vue(){
  this.mixin();
}
Vue.mixin= function(option){
    $.extend(this, option);
}

Vue.prototype 就是直接添加到原型上

所以区别就是一个是直接在对象上,一个是在原型上,在线测试
http://jsbin.com/cisucofine/e...

2. 从使用上说

Vue.mixin 的参数其实和 Vue 构造函数的类似,可以看作是为了复用 Vue 组件的方式。

Vue.prototype 就是完全创建一个新的方法

迷茫

反对使用 Vue.prototype,因为你不知道会不会和以后的 Vue 版本中的 prototype 冲突。

黄舟

推荐Vue.prototype

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号