JavaScript中的面向对象程序设计
2015-08-14 14:55
477 查看
面向对象程序设计主要是有3个特点:封装、继承、多态,这篇文章简单介绍如何在JavaScript实现类,以及如何继承类。
上面这种方法有个弊端:type字段是是所有Cat实例的公共属性,实际上在内存只需要存一份即可。但是通过new出来的每个实例都会单独保存一份,这样就造成了内存的浪费。
我们可以通过指定构造函数的prototype值来完成这个功能:
类的实现
js中没用关键字class,但是提供了关键字new和this。我们可以先声明一个构造函数,然后通过new这个构造函数,便完成了一个类的封装。例子如下:function Cat(name, color){ this.name = name; this.color = color; this.type = "猫科"; } var cat1 = new Cat("花花", "白"); var cat2 = new Cat("宝宝", "黑") console.log("cat1 name: %s, color: %s", cat1.name, cat1.color); console.log("cat2 name: %s, color: %s", cat2.name, cat2.color);
上面这种方法有个弊端:type字段是是所有Cat实例的公共属性,实际上在内存只需要存一份即可。但是通过new出来的每个实例都会单独保存一份,这样就造成了内存的浪费。
我们可以通过指定构造函数的prototype值来完成这个功能:
Cat.prototype.type="猫科",这样所有Cat的实例将共享这个
type字段。类的成员函数也可以通过这样来设置。
类的继承
使用apply
function Animal(){ this.kind = "动物"; } function Cat(name, color){ Animal.apply(this, arguments); this.name = name; this.color = color; } var cat1 = new Cat("花花", "白"); console.log("cat1 name: %s, color: %s kind: %s", cat1.name, cat1.color, cat1.kind);
使用prototype
function Animal(){ this.kind = "动物"; } function Cat(name, color){ this.name = name; this.color = color; } Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; var cat1 = new Cat("花花", "白"); console.log("cat1 name: %s, color: %s kind: %s", cat1.name, cat1.color, cat1.kind);
相关文章推荐
- .net 4中使用 dynamic,将json字符串转成对象的 万能方法。
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;
- .net 4中使用 dynamic,将json字符串转成对象的 万能方法。
- jsp页面显示课程表
- (4.1.31)JSON解析之自解析、Gson、fastjson
- 常用JS正则匹配
- js按钮点击展开收起
- jsp页面中批量存储和批量更新(虽然不难但是经常遇到!!)
- javascript keycode大全
- ExtJs4 - grid 合并单元格 跨行跨列
- JavaScript new Date()IE浏览器下出错 NaN
- xml与json的区别,总结
- 《JS设计模式笔记》构造函数和工厂模式创建对象
- js 基础
- js Array function--模拟栈和队列
- JS函数式编程【译】4.1 部分函数应用和珂理化
- JS语言核心
- js 是否为空
- Js获取当前日期时间及其它操作
- js中的宽度、高度、偏移量问题,offset、client、scroll