您的位置:首页 > Web前端 > JavaScript

Js面向(基于)对象编程

2016-04-22 00:51 441 查看

Js面向(基于)对象编程介绍



以类(原型对象)为模板创建对象







//张老太养猫的问题

//传统方法比较麻烦
var cat1_name="小白";
var cat1_age=3;
var cat1_color="白色";

//解决办法:把猫的属性集中,创建一种新的数据类(原型对象/类)。用面向对象的办法来解决上面的问题。
//这里就是一个cat类

function Cat(){
}
//如果你这样用
//Cat();//函数
var cat1=new Cat();//类
//这时cat1就是一个对象(实例)
cat1.name="小白";
cat1.age=3;
cat1.color="白色";
//从上面的代码我们可以看出
//1.js中的对象的属性可以动态的添加。
//2.属性没有限制。

window.alert(cat1.name+cat1.age+cat1.color+cat1.hobby);//没有定义的对象会弹出undefined








精简如下:



创建对象的方式有五种:





使用构造函数来定义类(原型对象)





举例:

//在js中一切都是对象
function Person(){}
window.alert(Person.constructor);//类也是对象,是以function创造出来的对象
var a=new Person();
window.alert(a.constructor);//a对象实例的构造函数
window.alert(typeof a);//a的类型是什么

var b=123;
window.alert(b.constructor);
window.alert(typeof b);

var c="123";
window.alert(c.constructor);
window.alert(typeof c);


如何判断一个对象实例是不是Person类型?

if (a instanceof Person){
window.alert("a是person ok1");
}

if(a.constructor==Person){
window.alert("a是person ok2");
}












//访问对象属性的两种方式
function Person(){}
var p1=new Person;
p1.name="顺平";
alert(p1.name);
alert(p1["name"]);
var val="na"+"me";
alert(p1[val]);






运行结果:10名字小白名字小白

运行原理图:





js垃圾回收机制:

内存由js引擎管理,js引擎是浏览器的一部分



引用次数为0 内容清零 垃圾回收

对象引用问题的说明-----图

① Js被动释放对象内存:

被动体现就算引用次数为0 ,在也不知道什么时候会回收,可能是内存不够用的时候

//js中释放内存①----被动
function Person(){}
var a=new Person();
a.age=10;
a.name="小明";
var b=a;
b.name="小白";
window.alert(b.age+"名字"+b.name+"名字"+a.name);
//至此引用了两次堆里面的内容
b=null;
window.alert(a.age+"名字"+a.name);
window.alert("b.age="+b.age);
//此时引用一次
a=null;




② js还提供一种方式,主动释放对象内存: delete


js中释放内存②----主动  delete
function Person(){};
var a=new Person();
a.age=10;
a.name="小明";
var b=a;
b.name="小白";
window.alert(b.age+"1名字"+b.name);
delete a.age;//删除a对象的属性(不能删对象,只能删属性)
//a和b 是指向同一个地方,所以b.age也会被删掉。
window.alert(b.age+"2名字"+b.name);




运行结果: 小明 200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: