【原生js】js面向对象三大特征之封装笔记
2015-06-12 14:19
591 查看
所谓封装,就是把抽象出的属性和对属性的操作写到类的定义中,称为封装。
js中实现封装主要有两种封装(公开,私有)
A.构造函数方式与原型方式给对象添加方法的区别
说明通过构造函数来分配成员方法,给每个对象分配一份独立的代码。这样的弊端就是如果对象实例有很多,那函数的资源占用就会很大,而且有可能造成内存泄漏。而原型法是大家共享同一份代码,就不会有那种弊端。
1.通过原型法分配的函数是所有对象共享的;
2.通过原型法分配的属性是独立的;
3.如果希望所有的对象使用同一个函数,最好实用原型法添加方法,这样比较节省内存。
4.
js中实现封装主要有两种封装(公开,私有)
function Person(name,sal){ this.name=name; //公开 var sal=sal;//私有 this.showInfo=function(){ //公开 window.alert(this.name+” ”+sal); } showInfo2(){ //把函数私有化. window.alert(“你好”+this.name+” ”+sal) } }
A.构造函数方式与原型方式给对象添加方法的区别
//通过构造函数方式给对象添加方法 function Dog(name){ this.name=name; this.shout=function(){ window.alert("小狗尖叫"+this.name); } } var dog1=new Dog("aa"); var dog2=new Dog("bb"); if(dog1.shout==dog2.shout){ window.alert("相等"); }else{ window.alert("不相等"); } //会输出“不相等”
//通过原型方式给对象添加方法 function Dog(name){ this.name=name; } Dog.prototype.shout=function(){ window.alert("小狗尖叫"+this.name); } var dog1=new Dog("aa"); var dog2=new Dog("bb"); if(dog1.shout==dog2.shout){ window.alert("相等"); }else{ window.alert("不相等"); } //会输出“相等”
说明通过构造函数来分配成员方法,给每个对象分配一份独立的代码。这样的弊端就是如果对象实例有很多,那函数的资源占用就会很大,而且有可能造成内存泄漏。而原型法是大家共享同一份代码,就不会有那种弊端。
1.通过原型法分配的函数是所有对象共享的;
2.通过原型法分配的属性是独立的;
3.如果希望所有的对象使用同一个函数,最好实用原型法添加方法,这样比较节省内存。
4.
function Person(){ } // 创建对象 var p1=new Person(); p1.say(); // 这时用原型法分配 Person.prototype.say=function(){ window.alert("ok"); } //这样执行会报错。p1.say()必须写到 prototype.say下方。 //说明 prototype方式是后置绑定
相关文章推荐
- 学习Javascript闭包(Closure)
- 什么是JavaScript?
- Javascript类型转换表
- JavaScript开发的45个经典技巧
- Javascript学习总结-技巧、实用函数、简介方法、编程细
- 跳转时让JSON请求并刷新
- JavaScript-demo
- JSF 2.0 Facelets 的模板技术
- bzoj 1015: [JSOI2008]星球大战starwar 并查集
- JSON小结
- 让JavaScript在Visual Studio 2015中编辑得更容易
- extjs3.4-moneyfield.js改写
- 坑人的 Javascript 模块化编程 sea.js
- 坑人的 Javascript 模块化编程 require.js
- 关于extjs5.0下的mixins
- JavaScript学习总结-技巧、实用函数、简洁方法、编程细节
- JS 内部传参
- 用JS写一个极简的番茄钟
- js数组的操作
- js最简单幻灯片切换支持同一页面多次调用