JS学习笔记——面向对象,设计模式
来源:互联网 发布:java获取私有属性 编辑:程序博客网 时间:2024/05/16 08:59
面向对象,设计模式相关概念:
JS中,只有函数具有作用域。定义在一个函数中的变量,在该函数内嵌的函数是可以访问的。
函数是运行在定义他们的作用域中,而不是运行在调用他们的作用域中。
定义类的三种基本模式
1.门户大开型,全部是共有的
2.下划线变量模式,从编程规范上区分了私有变量
3.采用闭包实现真正的私有属性和方法(缺点:每个实例都有一份属性和方法的拷贝,浪费内存,而且不利于继承)
function Book(name) { //定义私有的内部属性 var n; // 定义公有的访问接口 this.getName = function () { return n; } this.setName = function (newName) { if (checkName(newName)) { n = newName; } else { throw new Error("name format error"); } } //定义私有方法 function checkName(checkname) { if (checkname.length > 10) { return false; } return true; } //初始化内部属性 this.setName(name); } //所有实例都共享的方法 Book.prototype.display = function () { alert("display:" + this.getName()); } var b = new Book("wangjue"); alert(b.getName()); b.setName("fengfei"); alert(b.getName()); b.display();
继承的实现
// 类的继承 //定义父类 function SuperType(name1, sex1) { this.name = name1; this.sex = sex1; } SuperType.prototype.getName = function () { return this.name; } //定义子类 function SubType(name1,sex1,age1) { SuperType.call(this, name1, sex1);//调用父类的构造函数 this.age = age1;//子类新增的属性 } //将子类继承到父类 SubType.prototype = new SuperType(); SubType.prototype.constructor = SubType;//修改子类的构造器名称(构造函数) //拓展子类的方法,一定要放在继承的两行代码之后!! SubType.prototype.getAge=function(){ return this.age; } var s = new SubType("wang", "manle", 12); alert(s.getName() + s.getAge()); alert(SubType.prototype.constructor);
- JS学习笔记——面向对象,设计模式
- 设计模式学习笔记——面向对象设计原则
- 设计模式学习笔记(一)——面向对象设计模式与原则
- 设计模式学习笔记(一)——面向对象设计模式与原则
- 设计模式学习笔记系列(一)——面向对象设计原则
- 《设计模式》学习笔记1——七大面向对象设计原则
- 面向对象设计模式学习笔记——单例模式
- 面向对象设计模式——工厂方法模式(学习笔记)
- js设计模式---面向对象
- (09)Java学习笔记——面向对象03——单例设计模式
- 《设计模式精解》学习笔记(一)—— 面向对象基础
- 《设计模式精解》学习笔记(六)—— 面向对象的新视角
- 《设计模式精解》学习笔记(六)—— 面向对象的新视角
- 设计模式精解学习笔记(六)—— 面向对象的新视角
- 《大话设计模式》——学习笔记之面向对象原则&UML类图
- [设计模式学习笔记一][面向对象七大设计原则]
- java设计模式学习笔记--面向对象设计原则
- 设计模式学习笔记--面向对象设计原则
- 映射二叉堆+Dijkstra
- Hadoop MapReduceV2(Yarn) 框架简介
- 隐藏在 PDF 中的 APT 攻击代码
- MapReduce:详解Shuffle(copy,sort,merge)过程
- YUYV摄像头采集jpeg格式图片
- JS学习笔记——面向对象,设计模式
- compile kernel error-- size of unnamed array is negative无名数组的大小为负
- eclipse调试2
- 线程知识点总结02
- 映射二叉堆
- Android开发EditText属性
- java double float 精度计算
- 越狱开发之——iOSOpenDev建立第一个越狱项目HelloWorld插件
- ORA-01658: 无法为表空间space中的段创建 INITIAL 区