韩顺平 javascript教学视频_学习笔记13_类和对象细节_创建对象的几种方式_js对象内存分析

对象——function特别说明

  1. 在js中一切都是对象
  2. 类(原型对象)其实也是对象,它实际上是Function类的一个实例,通过类我们可以创建自己的对象实例,可以通过下面的代码来说明
function Person(){  
}  
var a=new Person();  
window.alert(Person.constructor);

对象实例——如何创建对象实例

var 对象名=new 类名/原型对象名();

对象实例——如何访问(使用)对象实例的成员变量

  1. 对象实例名.属性名;
  2. 对象实例名["属性名"];

对象实例名["变量名"]的方式可以实现动态的访问变量,如:
function Person(){  
}  
var p1=new Person();  
p1.name="顺平";  
window.alert(pa['name']+" "+p1.name); 

补充说明:带var和不带var的区别

看代码:

<html>  
	<head>  
		<script language="javascript">  
			
			//全局变量  
			var abc=89;  
			function test(){  
				//在函数里,如果你不带 var,则表示使用全局的 abc 变量  
				//如果你带上var,则表示重新定义一个新的 abc 变量  
				//可以这么理解,
				//在函数内部,加 var 表示定义一个局部变量,不加 var 表示使用外部的全局变量  
				abc=900;  
			}  
			test();  
			window.alert(abc); //输出900  
  
			var abc2=89;  
			function test2(){  
				var abc2=900;  
			}  
			test2();  
			window.alert(abc2); //输出89  
		</script>  
	</head>  
	<body></body>  
</html>  

动态访问变量的意义可以当作串来拼接访问
具体看如下代码

<html>  
	<head>  
		<script language="javascript">  
			function Person(){  
			}  
			var p1=new Person();  
			p1.name="顺平";  
			
			//拼接字符串,动态访问  
			var val="na"+"me";  
			window.alert(p1[val] + p1.name);  
			
		</script>  
	</head>  
	<body></body>  
</html>  

加深一下理解

为了让大家加深印象,我们定义一个人类(Person)(包括名字,年龄)
看下面的一段代码

<html>  
	<head>  
		<script language="javascript">  
			function Person(){  
			}  
			var a=new Person();  
			a.age=10;  
			a.name="小明";  
			
			var b=a;  
			b.name="小白";  
			window.alert(b.age+"名字 "+b.name+" 名字"+a.name);  
			
		</script>  
	</head>  
	<body></body>  
</html> 

从上面代码中可以知道,js对象的传递也是引用传递

var a=new Person(); // new Person()是一个真正的数据,a是指向它的一个引用

深入理解:

什么时候才会把堆里的内容回收了呢
对象回收机制(GC),垃圾回收(GC)是怎样确定堆里的内容是垃圾的呢,内存被js引擎管理,js引擎是浏览器的一部分,js引擎维护了一张表



垃圾回收机制是一种被动的回收方式,GC什么时候来调用,我们是不知道的,反正不是时时刻刻在调用的

在js中还有一种主动的删除方式,主动释放内存:delete
delete 只能删除掉某个对象的属性,不能直接删除某个对象
如下:

delete a.age;  //直接把age属性删掉了,即使b没有置空,b.age也访问不到了。
delete a;  //这句话是不对的

delete直接删除掉某个对象的属性
delete 对象名.属性  //这样就会立即释放对象的这个属性空间

再来看一个代码:

var a=new person();
a.age=10;
a.name="小明";
var b=a;
document.write(b.name); // 输出小明
b.age=200;
document.write(a.age); // 输出200

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章