位置: 编程技术 - 正文
推荐整理分享JavaScript对象参数的引用传递(js对象的constructor),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:js对象的constructor,js对象参数,jsdocument对象,javascript中对象的含义,js对象作为参数传递,js函数参数为对象,js对象参数,js函数参数为对象,内容如对您有帮助,希望把文章链接给更多的朋友!
今天碰到一个问题,怎样把参数变更影响到函数外部,如:
输出结果还是wood,说明当myname传入A函数后,在函数体内,相当于有一个myname的副本,这个副本的值等于myname,之后在函数体内对其做的操作是在这个副本上进行的。
但情况有所不同,当传入的参数是 数组 、 对象 时,在函数体内对参数所做的更改会反映到原变量上。
可以看出,上面代码中已经把friut数组的第一个元素更改了。
下面是关于对象的例子:
可以很明显地看到函数体内对参数的改动影响到了原来的变量,这与通常情况下的传参有质的区别了。需要特别注意。
But,当在函数体内对传入的数组或对象赋值时,这个更改不会反映到函数体外的原变量身上!
请看:
按照上面函数内部的更改会反映到原变量的理论,你肯定觉得执行完A()后myname变量的name1属性的值已经变成'Yao'了吧。但结果让人有点难以接受。
原因在于,当在函数体内使用赋值操作时,系统就创建了一个变量名为p的变量。这个p是函数内部的变量,对它进行赋值当然只在函数体内起作用,外面的myname还是原来的myname。
这一步与原来代码的操作差别仅在于在 函数体内是对参数赋新值呢还是对参数的属性或数组的元素进行更改 。
下面我们用传递对象的方式,重新实现一个时钟数字格式化输出的例子:
例子使用setInterval()函数定时调用刷新事件,也可以用setTimeout()在getTime()中递归调用来实现。
标签: js对象的constructor
本文链接地址:https://www.jiuchutong.com/biancheng/383804.html 转载请保留说明!友情链接: 武汉网站建设