JavaScript高级教程中说对象传递参数是按值传递的,想问一下大佬是怎么理解这个的。 有内存说明更好JavaScript高级教程中说对象传递参数是按值传递的,想问一下大佬是怎么理解这个的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 书上写的有问题,对象传递参数是按引用传递的,即传递的是内存地址刚开始变量 obj 指向 person对像的内存地址,然后 obj = new Object() 后,obj 指向了新的内存地址,此时obj 和 person对象的内存地址就不是同一个了,所以person.name 还是 Nicholas 。 作者在前一页已经说明了,虽然传的是值类型,但是会引用原对象的地址,但如果将这个参数重新赋值为另外一个对象(不管是new Object()这类的还是基本类型),则会断开对原对象的引用,而不是将原对象一起改变 作者说Javascript里只有传值的,我们通过C#来看看,参数带ref的是传址的,不带的和Javascript里的是一样的先看看结果:下面是代码: class Program { static void Main(string[] args) { var user = new User() { Age = 20, Name = "张三" }; Console.WriteLine("初始化:" + user.ToString()); tt(user); Console.WriteLine("after tt:" + user.ToString()); t2(ref user); Console.WriteLine("after t2:" + user.ToString()); Console.ReadKey(); } static void tt(User user) { user.Age = 30; user = new User() { Age = 50, Name = "李四" }; Console.WriteLine("tt new:" + user.ToString()); } static void t2(ref User user) { user.Age = 60; user = new User() { Age = 50, Name = "王五" }; Console.WriteLine("t2 new:" + user.ToString()); } class User { public string Name { get; set; } public int Age { get; set; } public override string ToString() { return string.Format("姓名:{0},年龄:{1}", Name, Age); } } }更多的可以参考这里 window.showModalDialog打开调用父窗口方法的问题 牛人 ,帮忙让 div灰层里面的div移不出去div灰层 在线等 如何在网页中运行本机软件 请教关于跨站参数传递的问题。 广告代码浮动效果-请求帮助-826833229 JavaScript 实现像画卷展开一样的效果 帮我看看这个怎么取值(简单的那种) 请版主推荐好的相关网站 firefox下的一个问题,请教大家! 如何使页面链接href文字变色?? Js 比较数字并赋值的问题,请大家指点下! 怎样找到源代码中的对象?
先看看结果:
下面是代码:
class Program
{
static void Main(string[] args)
{
var user = new User() { Age = 20, Name = "张三" };
Console.WriteLine("初始化:" + user.ToString());
tt(user);
Console.WriteLine("after tt:" + user.ToString()); t2(ref user);
Console.WriteLine("after t2:" + user.ToString());
Console.ReadKey();
} static void tt(User user)
{
user.Age = 30;
user = new User() { Age = 50, Name = "李四" };
Console.WriteLine("tt new:" + user.ToString());
} static void t2(ref User user)
{
user.Age = 60;
user = new User() { Age = 50, Name = "王五" };
Console.WriteLine("t2 new:" + user.ToString());
} class User
{
public string Name { get; set; }
public int Age { get; set; } public override string ToString()
{
return string.Format("姓名:{0},年龄:{1}", Name, Age);
}
}
}
更多的可以参考这里