Js面向(基于)对象编程

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值