JavaScript 构造函数 面相对象学习必备知识

 更新时间:2010年06月09日 01:11:25   作者:  
关于JavaScript构造函数,如今出现了很多JavaScript的框架,例如jQuery、Ext等等这些,这些将JavaScript作为一种面向对象的语言进行编程,那么JavaScript到底是怎么样实现面向对象的一些特征的呢,首先,我们来看看JavaScript怎么样来定义一个构造函数。
复制代码 代码如下:

function A(x)
{
this.x = x;
}
var obj = new A(5);
alert(obj.x);

这段代码十分简单,但是我们重要的是看到了一个十分惊讶的结果,obj被我们赋予了一个属性x,就如同我们在C#中使用某个类的实例的时候一样。那么这个属性是怎么样产生的呢?

关键语句:this.x=x。这句话就是进行一个属性的申明与赋值,这里,我们肯定会问到,this是什么?为什么可以使用this.x来进行申明与赋值属性呢?

其实this代表的就是我们刚刚实例化出来的obj,就相当于我们使用obj去调用了构造函数A里面的属性、方法等等。

那么,我们怎么样去在构造函数中定义一个方法呢?

复制代码 代码如下:

function A(x,y)
{
this.x = x;
this.y = y;
A.prototype.FunX = function(){alert(x)};
A.prototype.FunY = function(){alert(y)};
}
var obj = new A(5,10);
alert(obj.x);
alert(obj.y);
obj.FunX();
obj.FunY();

执行的结果十分简单,弹出5、10、5、10的结果,可以看到
复制代码 代码如下:

A.prototype.FunX = function(){alert(x)};
A.prototype.FunY = function(){alert(y)};

这两句代码定义了两个方法,分别是FunX和FunY。那么,如果现在出现了一种情况,如果我们需要临时的给A函数添加方法怎么办呢?

复制代码 代码如下:

function A(x,y)
{
this.x = x;
this.y = y;
}
A.prototype.FunX = function(){alert("5")};
var obj = new A(5,10);
alert(obj.x);
alert(obj.y);
obj.FunX();
A.prototype.FunY = function(){alert("10")};
obj.FunY();

运行这段代码,我们可以看到,弹出的结果还是和以前的结果一样,但是我们将两个方法都定义在了外边,而且方法FunY是定义在实例化之后的,那么这里大家看出来了什么没?很显然,在我们使用obj.FunY()语句时候,代码会重新的去构造一下obj,然后再来执行此方法,那么如果代码改成这样?
复制代码 代码如下:

obj.FunY();
A.prototype.FunY = function(){alert("10")};

很显然,FunY()就不会去执行方法了。

下一遍,将会说一下关于JavaScript的构造函数与原型(prototype),若有疑问或不正之处,欢迎提出指正和讨论。

相关文章

  • JavaScript RegExp方法获取地址栏参数(面向对象)

    JavaScript RegExp方法获取地址栏参数(面向对象)

    个人认为循环用得多不是什么好事。这里推荐一种利用OO思想加上RegExp的方法,使它更灵活、高效。
    2009-03-03
  • 浅谈javascript 面向对象编程

    浅谈javascript 面向对象编程

    这周心血来潮,翻看了现在比较流行的几个JS脚本框架的底层代码,虽然是走马观花,但也受益良多,感叹先人们的伟大……
    2009-10-10
  • javascript最常用与实用的创建类的代码

    javascript最常用与实用的创建类的代码

    组合构造函数模式和原型模式
    2010-08-08
  • JavaScript中的面向对象介绍

    JavaScript中的面向对象介绍

    在JavaScript,可以说everything is object,那么什么是对象?对象就是包含一组变量和函数的集合。在其它面向对象语言中对象是由类的实例化而来,JavaScript是基于原型的面向对象语言,没有类的概念,对象派生自现有对象的副本
    2012-06-06
  • javascript 写类方式之八

    javascript 写类方式之八

    这里用的是Ext core3.0,Ext中用Ext.extend来定义一个类(当然它更多用来扩展一个类),Ext整个框架各种控件如Panel,MessageBox等都是用Ext.extend方法来扩展。这里仅仅用它来定义一个最简单的类。
    2009-07-07
  • JavaScript 面向对象入门精简篇

    JavaScript 面向对象入门精简篇

    围绕面向对象的几大关键字:封装 ,继承 ,多态 ,展开JavaScript面向对象
    2009-03-03
  • brook javascript框架介绍

    brook javascript框架介绍

    brook是一个针对大规模web开发的Javascript框架,而不是一个工具集。
    2011-10-10
  • JavaScript的面向对象方法以及差别

    JavaScript的面向对象方法以及差别

    JS作为一种动态语言,在语法上有相当大的自由度,所以造成了一种功能,有N种写法的局面。 在JS中实现OOP,一般来说有两种方法:
    2008-03-03
  • javascript类继承机制的原理分析

    javascript类继承机制的原理分析

    本文着重解析javascript类继承机制,让你从底层了解javascript是怎样实现“继承”这一概念的。
    2009-09-09
  • Javascript函数加壳多用于事件绑定

    Javascript函数加壳多用于事件绑定

    逸云.framework by Neequ 帮助:将改写函数体,使得同名函数可以同时执行 func 将之加壳的函数体字符串 name 函数名 obj 可选,默认为 window,为应用函数的父对象,多用于事件绑定
    2007-12-12

最新评论