前端聚集地

关于深拷贝的问题,以及为什么vue的数据要return出来

2019-01-04  本文已影响0人  小黑的眼

众所周知,vue的存储数据要return出来 ,其实vue官方有详细的解释。API — Vue.js 附上链接大家可以自行查看。

之前遇到的问题就是深拷贝的问题,

先展示一下当时的解决办法:

Vue.prototype.cloneObj = function(obj) {

            let _this = this;

            let str, newobj = obj.constructor === Array ? [] : {};

            if (typeof obj !== 'object') {

                return;

            } else if (window.JSON) {

                str = JSON.stringify(obj);

                newobj = JSON.parse(str);

            } else {

                for (var i in obj) {

                    newobj[i] = typeof obj[i] === 'object' ? _this.cloneObj(obj[i]) : obj[i];

                }

            }

            return newobj;

        };

直接将此方法,放在全局引入即可,但是 为什么会有这个问题呢,牵扯到 js 的数据类型 有 两种 就是简单数据类型和复杂数据类型也就是基本数据类型和引用数据类型

基本数据类型:Undefined、Null、Boolean、Number

引用数据类型:Object、Array和Function

其实string有些特殊 后面再讲

大概就上上图 我表达的意思 如果直接赋值的话 就会改变 堆里面村的数据 也就是改变了原始的数据 但是return出来的话 就是把他拿出来改变特德值。后面有空的话  会详细的补充一下这些知识。

上一篇 下一篇

猜你喜欢

热点阅读