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
相关文章推荐
- javascript判断对象是否为空
- jstack命令
- JavaScript基础
- jstat命令
- JavaScript记录光标在编辑器中位置的实现方法
- js显示世界时间示例(包括世界各大城市)
- 动态加载JavaScript文件的两种方法
- IE和Firefox之间在JavaScript语法上的差异
- JavaScript中数组去除重复的三种方法
- JS实现的base64加密、md5加密及sha1加密详解
- JS简单循环遍历json数组的方法
- JS验证逗号隔开可以是中文字母数字
- 举例讲解如何判断JavaScript中对象的类型
- javascript找个某个标签为其添加属性
- jsp页面EL表达式无论是都取不到值的原因
- JSTree更换数据
- jsTree学习与实践(一)
- Extjs核心概念之Store
- ExtJs开发需要引入的文件
- js动态添加datagrid表头&批量保存实战研究