js函数调用html对象参数传递参数吗,js里函数参数传递对象传的是指针吗
js高程 page88在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数,或者用ECMAScript 的概念来说,就是arguments
对象中的一个元素)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
function setName(obj) {
obj.name = "Nicholas";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
以上代码中创建一个对象,并将其保存在了变量person 中。然后,这个变量被传递到setName()函数中之后就被复制给了obj。在这个函数内部,obj 和person 引用的是同一个对象。换句话说,即使这个变量是按值传递的,obj 也会按引用来访问同一个对象。于是,当在函数内部为obj 添加name
属性后,函数外部的person 也将有所反映;因为person 指向的对象在堆内存中只有一个,而且是全局对象。有很多开发人员错误地认为:在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的。为了证明对象是按值传递的,我们再看一看下面这个经过修改的例子:
function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
这个例子与前一个例子的唯一区别,就是在setName()函数中添加了两行代码:一行代码为obj重新定义了一个对象,另一行代码为该对象定义了一个带有不同值的name 属性。在把person 传递给setName()后,其name 属性被设置为"Nicholas"。然后,又将一个新对象赋给变量obj,同时将其name属性设置为"Greg"。如果person 是按引用传递的,那么person 就会自动被修改为指向其name 属性值为"Greg"的新对象。但是,当接下来再访问person.name 时,显示的值仍然是"Nicholas"。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj 时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁。
js函数调用html对象参数传递参数吗,js里函数参数传递对象传的是指针吗相关推荐
- php中数组的指针函数参数传递参数,循环语句、函数的参数及作用域、数组键值及指针操作函数(8月23日作业)...
实例演示while(),do~while() 实例 /** * while循环 */ $num = 1; $sum = 0; while ($num <= 100) { $sum +=$num; ...
- js跳转传递php参数,将JS / Jquery中的参数传递到另一页上的PHP
$.ajax({ type: 'POST', url: 'otherpage.php', data: $('form').serialize(), //you may want to give id ...
- js/jquery 获取url传递参数,js获取url?号后面的参数(一个或多个)
第一种方法: (获取一个) detail.html?order_id=10 <Script language="javascript"> function GetReq ...
- java中参数存储_Java中函数参数传递和数据存储
值传递是将要传递的值作为一副本传递的.. 引用传递,传递的是引用对象的内存地址.. 例如: int i=4; int j=i; //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 C ...
- 汇编和c语言函数的参数传递,c文件汇编后函数参数传递的不同之处
mac下clang编译后函数的参数先保存在寄存器中(以一定的规则保存),然后在函数中压入栈里, 以待后用.例如上篇例子,红色部分: .global _decToBin _decToBin: pushq ...
- JavaScript对象详解,js对象属性的添加
目录 一,什么是对象? 二,创建一个对象 三,对象的嵌套 四,对象的属性与修改 1,使用点.运算符 2,使用[]符号 3,修改属性 五,给对象添加属性 六,查看与删除对象的属性 1,使用Object. ...
- Python 把函数视作对象
一等函数 在 Python 中,函数是一等对象.一等对象需要具备以下几个条件: 1.在运行时创建 2.能赋值给变量或者数据结构中的元素 3.能作为参数传递给函数 4.能作为函数的返回值 在 Pytho ...
- c++之指针和引用作为函数参数传递时的区别
之前写过c++之值传递.引用传递.指针传递,今天再单独区分一下指针和引用作为函数参数传递时的区别. 本文参考浅谈C++中指针和引用的区别 一.指针作为函数参数传递时 1.类似于值传递,传入函数的指针只 ...
- js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...
1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...
最新文章
- Linux Kernel 5.0或在达成600万Git Objects时到来
- html二级下拉导航,html -----二级下拉导航的实现(常用)
- hadoop 023.0与hadoop 1.0 io.serializable分析
- Cannot input a tensor of dimension other than 0 as a scalar argument
- 汉诺塔的改编题(用栈求解,分别递归和非递归)
- php 我已阅读并同意 判断,phb.php
- 修改element-ui源码解决穿梭框选择后显示顺序问题
- Streams全库复制
- 微信小程序+微信公众号开发总结
- 嵌入式Linux下Qt的中文显示
- 图像的一维熵和二维熵
- 什么时候使用Task.Delay,什么时候使用Thread.Sleep?
- php读取西门子plc_第三方设备如何读取PLC数据
- geatpy - 遗传和进化算法相关算子的库函数(python)
- 《防患未然:实施情报先导的信息安全方法与实践》——2.3 情报循环
- 基于手机通信录应用的前景+
- 中国人口空间分布数据集1990-2021年
- 有趣python小程序系列之一
- 2012蓝桥杯C++本科 取球游戏
- Netty快速学习1-基础知识回顾