【JavaScript】JavaScript的对象-在函数中修改参数值的问题

在函数中修改参数值的问题

将基本数据类型的变量作为函
数参数传递的情况:

<scritp language="javascript">
    function changeValue(x)
    {
      x=5;
    }
    var x=3;
    changeVlaue(x);
    alert(x);//此处的x为多少?
</script>

其实形参是局部变量,当函数调用结束以后,用作形参的局部变量就会
不存在。即使在函数中修改了传递进来的基本数据类型的参数值,它也
不会应影响到主程序中作为参数的那个基本数据类型的变量值,所以这
里的x变量的值还是3;

将对象类型的变量作为函数参数传递的情况:

<script language="javascript">
    function Person(name,age)
    {
        this.age=age;
        this.name=name;
        this.say=sayFunc;
    }
    function sayFunc()
    {
        alert(this.name+":"+this.age);
    }
    function change(p1)
    {
        p1.name="李四";
    }
    var person1=new Person("张三",18);
    change(person1);
    person1.say();//这里person1的name属性名变成了"李四"
</script>

转载请注明出处:http://blog.csdn.net/acmman/article/details/43908789

时间: 2024-10-03 02:31:06

【JavaScript】JavaScript的对象-在函数中修改参数值的问题的相关文章

javascript设计模式之对象工厂函数与构造函数详解_基础知识

下面通过文字详解加代码分析的方式给大家分享下javascript设计模式之对象工厂函数与构造函数的相关知识. 概述使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法.然而,除了这两种常用的对象创建方式,JavaScript还提供了其他方法创建对象.1).使用工厂函数创建对象我们可以编写一个函数,此函数的功能就是创建对象,可将其. 概述 使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法. 然而,除了这两种常用的对象创建方式,JavaScript还提

在Javascript操作JSON对象,增加 删除 修改的简单实现_javascript技巧

在Javascript操作JSON对象,增加删除修改全有的,详情见代码 <script type="text/javascript"> var jsonObj2 = { teacher: [ { name: "jordan", sex: "m", age: "40" }, { name: "bryant", sex: "m", age: "28" }, {

c语言-C语言:在子函数中修改结构变量中元素的值

问题描述 C语言:在子函数中修改结构变量中元素的值 要写一个处理学生成绩信息的程序,使用单向链表,创建,遍历已经没有问题,但在修改结点的数据时出现问题,输入数据后程序就停止运行. 修改的思路是先根据学号定位到指定结点,然后修改数据,修改函数如下 void Correct(float *a,float *b,float *c,float *d,float *e,float *f) { printf("请依次输入学生正确的的英语 数学 物理 C语言成绩n"); scanf("%f

C# 调用api 时如何在他的回调函数中修改控件的值???

问题描述 由于声明api都是静态的,在api的调用中用静态的委托实现.我试验过了,在回调中通过实例化窗口可以访问到窗口中的共用方法,访问控件不出错误提示,但修改不成功.我还试验了如果不是委托的,就是普通静态方法通过传入窗口实例可以修改控件值.但由于api的回调是的签名必须匹配没法传入窗口实例.

javascript之典型高阶函数应用介绍二_javascript技巧

前言 在前一篇文章javascript之典型高阶函数中主要实现了几个典型的functional函数.文章最后也提出了疑问,为啥那样的实现与F#之类的函数式语言"不太一样"呢?今天来试试更"函数式"的实现. 另一种实现 同样地,尝试对之前实现的函数做一些改动,把for循环去掉.如何去掉呢?这里先要引入一个集合的归纳法定义: 一个集合要么是空集,要么是一个数与一个集合组成的数对从定义可以看到,每一个集合都可以看作为一个数和一个集合的对.例如:{1,2,4,5} 可以认为

函数中的形式参数和实际参数

1.举例:使用函数交换两个整形变量的值 运行结果: 分析: c语言中实际参数和形式参数之间采用值传递的方式来传递数据.在被调函数中,使用的是实际参数的一个拷贝数据.我们在swap函数中交换了a和b,那只是主函数x,y数据的一个备份,不能对main函数中的x,y产生影响,就像我们修改了一个复印件,不会对原件造成任何影响. 形式参数和实际参数可以不同名. 使用数组作为函数的形式参数,可以完成两个整数的交换.传递的是数组的名字(数组的第一个元素的起始地址) 2.使用数组作为函数的参数,交换数据: 运行

JavaScript中的对象、函数和继承

1. Javascript中的对象.JavaScript可以说是一个基于对象的编程语言,为什么说是基于对象而不是面向对象,因为JavaScript自身只实现了封装,而没有实现继承和多态.既然他是基于对象的,那么我们就来说说js中的对象. 1. Javascript中的对象 JavaScript可以说是一个基于对象的编程语言,为什么说是基于对象而不是面向对象,因为JavaScript自身只实现了封装,而没有实现继承和多态.既然他是基于对象的,那么我们就来说说js中的对象.有人说js中所有的都是对象

javascript函数中的3个高级技巧_javascript技巧

前面的话  函数对任何一门语言来说都是一个核心的概念,在javascript中更是如此.前面曾以深入理解函数系列的形式介绍了函数的相关内容,本文将再深入一步,介绍函数的3个高级技巧   技巧一:作用域安全的构造函数 构造函数其实就是一个使用new操作符调用的函数  function Person(name,age,job){ this.name=name; this.age=age; this.job=job; } var person=new Person('match',28,'Softwa

javascript 多次 new function 函数,返回的对象里面的属性值为何相同?

问题描述 javascript 多次 new function 函数,返回的对象里面的属性值为何相同? 分别在两秒和四秒后,把new 出来的对象输送到 控制台,但是结果都是一样的,对这块有点不是太明白?这个与面向对象的new 差异性在哪? 解决方案 你的prototype DEFAULT属性是对象,extend后直接修改对象,会导致另外所有实例继承的DEFAULT属性被修改了 生成一个副本,而不是直接修改原型中的对象 this.DEFAULT = $.extend({}, this.DEFAUL