笔记:javascript通过反射和遍历,访问对象的所有属性,及 按引用/按值传递

正读 JavaScript: The Good Parts.

1. 通过反射和遍历,访问对象的所有属性。

<html>

<body>

<script type="text/javascript">

var x = {

"first-name": "Gift",

"last-name" : "Young"

};

x.nickname = ‘nick‘;

for(name in x){

document.writeln(name+":"+x[name]+" "+typeof x[name]+"<br>");

}

</script>

</body>

</html>

上述代码的运行结果是:

first-name:Gift string

last-name:Young string

nickname:nick string

2.  " Objects are passed around by reference. They are never copied. "

下面的试验证实,String是按值复制的。

x与stooge是同一对象的reference,所以它们的属性的值一起变化;

snick和xnick的值“来自”对象的属性,但是snick和xnick的值并不随对象的属性的值的变化而变化。

<html>

<body>

<script type="text/javascript">

var stooge = {

"first-name": "Gift",

"last-name" : "Young"

};

var x = stooge;

x.nickname = ‘before‘;

var snick = stooge.nickname;

var xnick = x.nickname;

document.writeln("nick:"+stooge.nickname+"<br>");

document.writeln("x.nickname:"+x.nickname+"<br>");

document.writeln("xnick:"+xnick+"<br>");

document.writeln("snick:"+snick+"<br>");

document.writeln("<br>");

x.nickname = ‘after‘;

document.writeln("nick:"+stooge.nickname+"<br>");

document.writeln("x.nickname:"+x.nickname+"<br>");

document.writeln("xnick:"+xnick+"<br>");

document.writeln("snick:"+snick+"<br>");

</script>

</body>

</html>

上述代码的运行结果是:

nick:before

x.nickname:before

xnick:before

snick:before

nick:after

x.nickname:after

xnick:before

snick:before

时间: 2024-10-13 23:32:06

笔记:javascript通过反射和遍历,访问对象的所有属性,及 按引用/按值传递的相关文章

JavaScript基础 使用 for in 循环遍历 window对象的所有属性

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

C#遍历匿名对象的所有属性、value

Object obj = new { name="admin",age=123 ,pwd="123" }; //遍历匿名对象 foreach (System.Reflection.PropertyInfo p in obj.GetType().GetProperties()) { Console.WriteLine("name:{0},value:{1}",p.Name,p.GetValue(obj)); }

访问对象中的属性与方法

访问对象中的属性: 引用名称.属性名称 访问对象中的方法: 引用名称.方法名称() 1 //第一步:编写类 2 class Student{ 3 //第二步:编写属性也叫做成员变量或实例(对象)变量 4 String name; //默认值为null 5 int age; //默认值为0 6 char sex; //默认值为\u0000 7 String address; //默认值为null 8 9 //第三步:编写方法 10 public void study(){ 11 System.ou

你相信吗??Python把数字也当做对象!@@@对象,名称绑定,引用计数

本文学习自:http://blog.csdn.net/yockie/article/details/8474408 1.对象 Python中, 万物皆对象,包括12345等int常量.不信吗??用dir()命令看一看就知道 当然了,既然他们都叫做对象.那么肯定有共同点了!所有的对象都有下面的三个特征 * 都有唯一的标识码 id() * 都有确定的类型 * 有内容(或称为值) 一旦对象被创建,标识码就不能更改,对象类型也是不可更改的,内容可以改变(可变对象如dict.list .恒定对象如int.

JavaScript语言精粹读书笔记- JavaScript对象

JavaScript 对象 除了数字.字符串.布尔值.null.undefined(都不可变)这5种简单类型,其他都是对象. JavaScript中的对象是可变的键控集合(keyed collections). 对象是属性的容器,其中每个属性都拥有名字和值. JavaScript中的对象是无类别的(class-free)的.它对新属性的名字和值没有约束. JavaScript包括一个原型链特性,允许对象继承另一对象的属性. 对象的检索: stooge[“first-name”]或者stooge.

Java利用反射访问对象的私有成员

当我们使用反射为java对象的全部字段逐一赋值的时候,私有字段是不允许直接访问的. 在java.lang.reflect当中,有几个比较实用的API可以解决: getDeclaredFields() :获得所有访问级别的字段 setAccessible(boolean flag): 修改类成员的可访问性 下面以一个JavaBean 对象 转 DBObject 对象的方法为例: public static DBObject bean2DbObject(DBObject dbObject, PicI

YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因

YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因在YII框架的使用过程中,我们可以使用foreach直接遍历findAll等方法返回的对象的属性为什么呢?其实这与CModel实现的接口相关,接下来我们看下其实现的整个过程对于一个我们定义的model,它会继承虚类CActiveRecord,CActiveRecord类继承于CModel,如下所示: class special extends CActiveRecord { } abstract class CAct

浅析JavaScript访问对象属性和方法及区别

属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸.跳跃等. 在JavaScript中通常使用"."运算符来存取对象的属性的值.或者使用[]作为一个关联数组来存取对象的属性. 对象的属性和方法统称为对象的成员. 访问对象的属性 在JavaScript中,可以使用" . "和" [ ] "来访问对象的属性. 1. 使用" . "来访问对象属性 语法: objectNam

0145 JavaScript创建对象的三种方式 之 字面量:创建,访问对象的属性&amp;方法,变量、属性、函数、方法总结

在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object): 利用字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 5.2.1 利用字面量创建对象 5.2.1.1 创建 使用对象字面量创建对象:{ }. 就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法: { } 里面采取键值对的形式表示 键:相当于属性名 值:相当于属性值,可以是任意类型的值(数字类型.字符串类型.布尔类型,函数类型等) 代码如下: var star = { na