当前位置: 首页 > news >正文

网站开发的工作流程二级子域名ip地址查询

网站开发的工作流程,二级子域名ip地址查询,中间商可以做网站吗,网站建设 起飞JS的赋值与深浅拷贝实例 赋值 基本类型: 传值,在栈内存中的数据发生数据变化的时候,系统会自动为新的变量分配一个新的之值在栈内存中,两个变量相互独立,互不影响的。引用类型: 传址,只改变指…

JS的赋值与深浅拷贝实例

赋值

  • 基本类型: 传值,在栈内存中的数据发生数据变化的时候,系统会自动为新的变量分配一个新的之值在栈内存中,两个变量相互独立,互不影响的。
  • 引用类型: 传址,只改变指针的指向,指向同一个对象,两个变量相互干扰
//基本数据类型赋值
var a = 10;
var b = a;
a++ ;
console.log(a); // 11
console.log(b); // 10//引用数据类型赋值
let a = { name: '11' }
let b = a
b.name = '22'
console.log(a.name) // 22
console.log(b.name) // 22

浅拷贝

  • 对于基本类型,浅拷贝是对值的复制,拷贝前后对象的基本数据类型互不影响
  • 对于引用类型来说,浅拷贝是对对象地址的复制, 也就是拷贝的结果是两个对象指向同一个地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象

注意:浅拷贝只复制一层对象的属性

实现浅拷贝方法

方法一:Object.assign

**语法:Object.assign(target, …sources) **ES6中拷贝对象的方法,接受的第一个参数target是拷贝后的对象,剩下的参数是要拷贝的对象sources(可以是多个)

例1:

let target = {};
let source = {a:'11',b:{name:'duoduo'}};
Object.assign(target ,source);
console.log(target); // { a: '11', b: { name: 'duoduo' } }

例2:

let target = {};
let source = {a:'11',b:{name:'duoduo'}};Object.assign(target ,source);source.a = '22';
source.b.name = 'nana'console.log(source); // { a: '22', b: { name: 'nana' } }
console.log(target); // { a: '11', b: { name: 'nana' } }

Object.assign注意事项

  1. 只拷贝源对象的自身属性(不拷贝继承属性)
  2. 它不会拷贝对象不可枚举的属性
  3. undefined和null无法转成对象,它们不能作为Object.assign参数,但是可以作为源对象
  4. 属性名为Symbol 值的属性,可以被Object.assign拷贝。

方法二:Array.prototype.slice

实现原数组的浅拷贝

var a = [ 1, 3, 5, { x: 1 } ];
var b = Array.prototype.slice.call(a);
b[0] = 2;
console.log(a); // [ 1, 3, 5, { x: 1 } ];
console.log(b); // [ 2, 3, 5, { x: 1 } ];// 从输出结果可以看出,浅拷贝后,数组a[0]并不会随着b[0]改变而改变
// 说明a和b在栈内存中引用地址并不相同。
var a = [ 1, 3, 5, { x: 1 } ];
var b = Array.prototype.slice.call(a);
b[3].x = 2;
console.log(a); // [ 1, 3, 5, { x: 2 } ];
console.log(b); // [ 1, 3, 5, { x: 2 } ];
// 从输出结果可以看出,浅拷贝后,数组中对象的属性会根据修改而改变
// 说明浅拷贝的时候拷贝的已存在对象的对象的属性引用。

 

 

 

方法三:Array.prototype.concat

let array = [{a: 1}, {b: 2}];
let array1 = [{c: 3},{d: 4}];
let array2=array.concat(array1);
array1[0].c=123;
console.log(array2);// [ { a: 1 }, { b: 2 }, { c: 123 }, { d: 4 } ]
console.log(array1);// [ { c: 123 }, { d: 4 } ]

 

方法四:…扩展运算符

语法:var cloneObj = { …obj };

var a = [ 1, 3, 5, { x: 1 } ];
var b = {...a};
b[0] = 2;
console.log(a); // [ 1, 3, 5, { x: 1 } ];
console.log(b); // [ 2, 3, 5, { x: 1 } ];// 从输出结果可以看出,浅拷贝后,数组a[0]并不会随着b[0]改变而改变
// 说明a和b在栈内存中引用地址并不相同。
var a = [ 1, 3, 5, { x: 1 } ];
var b = {...a};
b[3].x = 2;
console.log(a); // [ 1, 3, 5, { x: 2 } ];
console.log(b); // [ 1, 3, 5, { x: 2 } ];
// 从输出结果可以看出,浅拷贝后,数组中对象的属性会根据修改而改变
// 说明浅拷贝的时候拷贝的已存在对象的对象的属性引用。

 

其他方法:

//浅拷贝实现
var obj = { a:1, arr: [2,3] };
var shallowObj = shallowCopy(obj);
function shallowCopy(src) {var dst = {};for (var prop in src) {if (src.hasOwnProperty(prop)) {dst[prop] = src[prop];}}return dst;
}
shallowObj.arr[1] = 5;
obj.arr[1]   // = 5

 

深拷贝

深拷贝开辟一个新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性注意:深拷贝对对象中的子对象进行递归拷贝,拷贝前后两个对象互不影响

 

实现方法:

方法一:JSON.parse(JSON.stringify())

  • JSON.stringify()是前端开发过程中比较常用的深拷贝方式。
  • 原理是把一个对象序列化成为一个JSON字符串,将对象的内容转换成字符串的形式再保存在磁盘上,再用JSON.parse()反序列化将JSON字符串变成一个新的对象
let arr = [1, 2, {name: ' duoduo'}];
let newarr = JSON.parse(JSON.stringify(arr));newarr[2].name = 'nana'; console.log(newarr); // [ 1, 2, { username: 'nana' } ]
console.log(arr);    // [ 1, 2, { username: 'duoduo' } ]

JSON.stringify()实现深拷贝注意点

  1. 拷贝的对象的值中如果有函数,undefined,symbol则经过JSON.stringify()序列化后的JSON字符串中这个键值对会消失
  2. 无法拷贝不可枚举的属性,无法拷贝对象的原型链
  3. 拷贝Date引用类型会变成字符串
  4. 拷贝RegExp引用类型会变成空对象
  5. 对象中含有NaN、Infinity和-Infinity,则序列化的结果会变成null
  6. 无法拷贝对象的循环应用(即obj[key] = obj)

方法二:jquery 的 $.extend

var $ = require('jquery');
var obj1 = {a: 1,b: { f: { g: 1 } },c: [1, 2, 3]
};
var obj2 = $.extend(true, {}, obj1);

赋值、深拷贝、浅拷贝

浅拷贝和深拷贝****区别浅拷贝只复制一层对象的属性,而深拷贝则递归复制了所有层级

 

JS的赋值与深浅拷贝实例

http://www.lbrq.cn/news/2732761.html

相关文章:

  • 辛集做网站网络销售平台
  • 专业机票网站建设营销策划方案
  • 多站点wordpress简数采集器宁波优化seo是什么
  • 中山网站建设文化咨询百度惠生活商家入驻
  • erp二次开发好还是网站开发好网站结构有哪几种
  • 郑州做营销型网站建设全国疫情最新消息
  • 微信上的小说网站是怎么做的昆明seo网站建设
  • 网站备案 法人代表厦门百度竞价开户
  • 上海建设银行官网网站6视频优化是什么意思
  • php网站建设的公司宝鸡网站seo
  • 做门户网站那个系统好网站页面优化方法
  • 网站后台管理怎么做友情链接培训机构如何招生营销
  • 龙岗网站制作资讯广州百度推广开户
  • 成都建工路桥建设有限公司网站北京seo怎么优化
  • 美国一个分享怎么做的网站叫什么营销页面设计
  • 北京网站设计技术太原seo代理商
  • 合肥工程建设信息网站杭州seo搜索引擎优化公司
  • 两个域名指向同一个网站怎么做谷歌平台推广外贸
  • 做网站经营流量企业营销策划书范文
  • 网站图怎么做会高清付费恶意点击软件
  • 网站开发需要英语太原seo关键词排名
  • 站酷网网址西安seo黑
  • 网站建设_制作_设计免费友情链接网页
  • 宁波网站排名公司官方进一步优化
  • 购物网站开发问题域分析余姚网站seo运营
  • 做女朋友的网站网站建设公司排名
  • 网站开发企业部门口碑营销5t
  • 北京品牌高端网站建设公司网络营销课程培训机构
  • 网站的模块seo 优化一般包括哪些内容
  • 丽水哪里做网站线上销售如何找到精准客户
  • 机器学习——PCA(主成分分析)降维
  • AutoSar AP平台中EM,CM,SM,PHM,LT等AP基础软件都有宿主进程吗
  • 智能座舱软件架构设计的宏观决策框架
  • SpringMVC(详细版从入门到精通)未完
  • 【每天一个知识点】生物的数字孪生
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序