var obj = { key1: "hello" , key2: "world" };
function modifyObj(obj){
obj = { key3: "world1", key4: "hello1" }; //将不会改变外部的obj
}
function changeObj(obj){
obj.key3 = "world2";
obj.key4 = "hello2"; //将改变外部的obj对象的属性
}
obj //函数调用前obj属性
Object
key1: "hello"
key2: "world"
__proto__: Object
modifyObj(obj)
obj //函数调用后obj属性没有变化
Object
key1: "hello"
key2: "world"
__proto__: Object
changeObj(obj)
obj //函数调用后,属性发生了变化
Object
key1: "hello"
key2: "world"
key3: "world2"
key4: "hello2"
__proto__: Object
原因分析:
Javascript中,对象的传递实际是引用地址的传递,当给函数设置属性时,对象的引用首地址并没有发生改变, 函数内部增加属性时,函数调用结束后,增加的属性继续生效
当在函数内部将传入引用的地址指向一个新的栈地址时,函数调用结束可能会导致引用指向无效的地址,故Javascript规范特别规定了,在函数内修改对象的引用地址时,函数调用结束后引用地址不做改变
author: mooring
date: 2012/11/09
分享到:
相关推荐
JavaScript 1.1之前的版本和ECMAScript Vl不支持该对象。 返回值 如果没有给构造函数传递value参数,那么它将返回一个 新创建的Object实例。如果指定了原始的value参数,构造函数将创建并返回原始值的包装对象,...
6、内置的JavaScript对象: 3 7、处理对象的内置方法: 3 8、用户自定义对象: 4 9、使用IE的Scriptlet: 4 三、Form元素:文本框和按钮 5 1、文本框: 5 2、按钮: 5 3、文本区: 6 4、口令密码: 6 5、确认按钮和...
每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 – arguments。这个变量含有一个传递给函数的所有参数的列表。 arguments 对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有 length ...
XPAGE学习笔记 1 Theme 2 2 在Xpage中使用Dojo 2 2.1 加载dojo.js 2 2.2 设置应用程序主题引入tundra.css 2 2.3 设置xpage属性引入dojo模块 3 2.4 Xpage的页面html代码 4 2.5 在xpage中使用dojo编程 4 2.5.1 按钮...
下面都是我学习W3C School教程中有关JavaScript写的学习笔记,每个方法我都亲身测试过,每个方法的用途和参数列表,我都是在经过我亲身实践后加上了我自己的一点理解,解释的还算比较详细。现记录下来,以便查阅: ...
用到什么功能,就写什么函数,觉得不够整洁,所以这次写的是封装的类,用起来还不错,但是传递参数的时候遇到了不少问题,所以,查阅了很多资料,总结如下: 1)动态绑定事件问题: 需要将onclick事件绑定到对象上,...
function 是 Javascript 中的第一类对象,这就意味着函数可以像其他值一样被传递。一个最常见的用法就是将一个匿名函数作为回调函数传递到另外一个异步函数中。
C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_...
今天学习笔记主要有这样几个关键字:变量、参数传递、执行环境、变量对象、作用域链。 1.变量 变量需要注意的有两点:变量声明和复制变量值。 变量声明肯定大家都很熟悉,在JS中我们都是通过 var 关键字...
JavaScript允许一个函数传递个数可变的参数,因为有arguments这个内置对象,它一个函数传递的所有参数的数组。举个例子,就明白了。 代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transiti
在AngularJS中,控制器是一个Javascript函数(类型/类),用来增强除了根作用域意外的作用域...当你或者AngularJS本身通过<code>scope.$new俩创建一个新的子作用域对象时,有一个选项能让你将它当做参数传递给控制器。
功能-js-101 使用学习函数 随机笔记 高阶函数是将另一个函数作为参数的函数或返回另一个函数的函数。 我想我更了解“函数是一流的对象”:函数可以像字符串或数字一样对待:它们可以存储值。 它们可以传递给另一个...
js函数基础部分:javascript学习笔记(四)function函数部分 创建函数的语法 命名函数表达式 代码如下: //命名函数表达式 var add = function add(a,b){ return a+b; }; 函数表达式 代码如下: //又名匿名函数 ...
│ │ │ ├[思库教育]JS 第31集 window对象中的几个简单对象.avi │ │ │ ├[思库教育]JS 第32集 iframe内嵌窗口.avi │ │ │ └[思库教育]JS 第33集 DOM介绍.avi │ │ ├ │ │ │ ├[思库教育]JS 第34集 当当...
全系列预计10-15篇文章,欢迎大家指正,虚心学习提高深入变量对象立即执行函数看透闭包函数参数传递基本数据类型你真的了解Js吗JavaScript专项进阶系列变量与函数提升数组去重防抖专题节流专题深浅拷贝数据类型检
angularjs学习笔记—工具方法 2017-05-09 04:01:49 -0700 AngularJS 1.angular.bind(self, fn, args) 作用:返回一个新的函数,绑定这个函数的this指向self 参数: self:新函数的上下文对象 fn:需要绑定的函数 ...