【JavaScript】面向对象
2016-12-14 20:14
274 查看
前言
JavaScript是面向对象的脚本语言,但是没有其他面向对象语言(如:C#)中的类的概念。创建一个对象,并赋予这个对象属性和方法
var box=new Object(); //创建一个Object对象 box.name='Ju'; //创建一个name属性并赋值 box.age=22; //创建一个age属性并赋值 box.run=function(){ //创建一个run()方法并返回值 return this.name + this.age + '运行中......'; }; alert(box.run()); //输出属性和方法的值
利用工厂创建多个类似的对象
如果我们要创建另外一个对象,只是把box改成box2的话,就会有很多冗余的代码,为了解决代码冗余的问题,我们引入了工厂的概念。代码如下:function createObject(name,age){ //集中实例化的函数 var obj=new Object(); obj.name=name; obj.age=age; obj.run=function(){ return this.name+this.age+'运行中......'; } return obj; } var box1=createObject('Ju',22); //第一个实例 var box2=createObject('Micheal',23); //第二个实例 alert(box1.run()); alert(box2.run()); //保持独立
工厂模式解决了重复实例化的问题。
利用构造函数创建特定的对象
工厂模式解决了重复实例化代码冗余的问题,不过仍存在对象的识别问题。上面代码汇总box1和box2的类型返回值都是Object,不容易区分。聪明的人们总是有解决办法的,构造函数出现了。代码如下:
function Box(name,age){ //构造函数模式 this.name=name; this.age=age; this.run=function(){ return this.name + this.age + '运行中......'; } } var box1=new Box('Ju',22); //new Box()即可 var box2=new Box('Micheal',23); alert(box1.run()); alert(box1 instanceof Box); //很清晰的识别他从属于Box
构造函数即解决了重复实例化代码冗余的问题,又解决了对象识别的问题。与工厂模式的不同之处在于:①构造函数没有显式的创建对象(new Object());②直接将属性和方法赋值给this对象;③没有return语句。
构造函数的一些规范
1.函数名和实例化构造名相同且大写(Box)2.通过构造函数创建对象,必须使用new运算符(工厂模式没有用new)
构造函数创建对象过程
通过构造函数可以创建对象,那么这个对象是哪里来的,new Object()在什么地方执行了?执行过程如下:1.当使用了构造函数,并且new构造函数,那么就后台执行了new Object();
2.将构造函数的作用域给新对象,(即new Object()创建出的对象),而函数体内的this就代表new Object()出来的对象;
3.执行构造函数内的代码;
4.返回新对象。
相关文章推荐
- prototype.js 让你更深入的了解javascript的面向对象特性
- JavaScript: 使用面向对象的技术创建高级 Web 应用程序
- javascript面向对象开发
- 面向对象的JavaScript编程
- 全面理解面向对象的 JavaScript
- javascript学习4——javascript面向对象(中)
- JavaScript面向对象(1)-封装
- 在JavaScript中使用面向对象(转)
- 悟透JavaScript(理解JS面向对象的好文章)
- JavaScript面向对象与原型(二)
- 面向对象的JavaScript的表格排序问题
- 面向对象的JavaScript及HTML5
- 面向对象的JavaScript编程
- 面向对象JavaScript开发实战
- javascript是面向对象么?
- JavaScript(03): 面向对象
- JavaScript 面向对象之工厂模式
- JavaScript面向对象(一)
- 【javascript面向对象之路】让我们一起来坦克大战吧01
- javascript面向对象(十五)