JavaScript对象复制和赋值操作示例分析
本文阐述了JavaScript对象的复制和分配操作。分享给大家参考,如下:
今天在做公司面试的时候,遇到了一个关于把对象复制分配给JavaScript的问题,一下子让我觉得很有意义。想和大家分享一下!
首先,按如下方式布局代码:
/***由管理员于2016年12月7日创建。*/var obj={name:'dahuang ',age:10 } var newObj=obj名称='黄晓';console . log(obj . name);console . log(NewObj . name);这个程序的结果是,它们都输出了修改后的名字:黄晓。
上面的代码使用了在线的HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun获得了以下运行结果:
那么,你觉得只有newObj对象的名称值被修改了很奇怪吗?为什么obj对象的名称值被篡改了?
其实原因很简单,因为实际上newObj对象只得到一个内存地址,不是真正的副本,所以Obj对象已经被篡改了。
但是当我们使用Object.create函数创建一个对象时,obj对象不会被篡改。话不多说,先编码:
var obj2={ name: 'dahuang ',age : 10 } var new obj 2=object . create(obj 2);newObj2.name='黄晓';console . log(obj 2 . name);console . log(NewObj2 . name);这个程序的结果是newobj2.name的值是黄晓,而obj2.name的值是大黄,保持不变。
上面的代码使用了在线的HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun获得了以下运行结果:
使用Object.create()方法复制对象,这样可以用指定的原型对象和属性创建一个新对象。
Object.create()方法介绍:
Object.create()方法创建一个具有指定原型和多个指定属性的对象。
语法
对象.创建(原型,[属性对象])
参数
Proto是一个对象,用作新创建的对象的原型。属性对象是可选的。参数对象是一组属性和值。这个对象的属性名将是新创建的对象的属性名,值将是属性描述符(这些属性描述符的结构与Object.defineProperties())的第二个参数相同)。注意:参数对象不能是未定义的,只有对象中的可枚举属性是有效的,即对象原型链中的属性是无效的。
引发异常
如果原型参数不是空值或对象值,将引发类型错误异常。
例如:
//Shape-super class function Shape(){ this . x=0;this . y=0;} shape . prototype . move=function(x,y){ this . x=x;this.y=y控制台信息('形状已移动');};//矩形-子类函数矩形(){ shape . call(this);//调用超级构造函数。}矩形.原型=对象.创建(形状.原型);var rect=新矩形();矩形的矩形实例//true . Shape的矩形实例//true.rect.move(1,1);//输出,“形状已移动”上面的代码使用了在线的HTML/CSS/JavaScript代码来运行该工具:http://tools.jb51.net/code/HtmlJsRun获得了以下运行结果:
有关JavaScript的更多信息,请查看本网站的专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》和《JavaScript数学运算用法总结》
希望本文对JavaScript编程有所帮助。
版权声明:JavaScript对象复制和赋值操作示例分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。