javascript构造函数的使用方法

作者:简简单单 2011-05-13

网页特效中,使用new运算符或者预定义的构造函数(如

Object(),Date(),Function()等)都可以创建并初始化一个新的js

对象。

构造函数具有如下两个特性,其本质仍然是javascript函数:

它由new运算符调用

传递给它的是一个对新创建的空对象的引用,将该引用作为关键字

this的值,而且它还要对新创建的对象进行适当的初始化

  //定义构造函数,
  function User(name,age)
  {
     this.name = name;
     this.age    = age;
 }

 //实例化两个对象
 var simaopig = new User('simaopig','25');
 var xiaoxiaozi = new User('xiaoxiaozi','25');
这里需要明白并且强迫自己接受如下观点:构造函数知识初始化了

特定的对象,但是其并不返回这个对象

在上例中,我们可以看到构造函数对this的引用,其只是初始化由

this传递进来的对象,并且啥也不返回。

方法:

所谓方法(method),其实就是通过对象调用的javascript函数

其实函数又是什么?函数与方法又有啥不同?这似乎是一个哲学概

念?鸡是什么?那就是蛋啊。。

函数其实就是数值,其和方法没有任何本质区别,之所以要交两个

名字,无非是要强调对象的作用罢了。

因为你完全可以把函数赋值给任何变量,当然也就包括了对象的属

性。

//实例化对象o
var o = new Object();

//把函数fun赋值给o的属性method
o.method = fun;

//声明函数fun
function fun()
{
return '250';
}

//调用o的属性,效果同学们自己去查看,又是弹窗,值为250

alert(o.method());
方法有个非常重要的属性,即在方法主体内部,关键字this的值为

调用该方法的对象。

任何被用作方法的函数都会得到一个额外的实际参数,就是调用该

函数方法的对象,也就是刚才我告诉你的this。

我为啥说函数其实就是方法,方法也就是函数呢?

函数是储存在变量中的值,而那个变量也不过是全局对象的一个属

性,因此,当你调用一个函数是,其实就是在调用全局对象的一个

方法。

但是,函数和方法真正的不同点就在于设计和目的上,方法是用来

对this对象进行操作的,而函数通常是独立的并不需要this对象

//使自己的对象多次复制,同时实例根据设置的访问等级可以访问

其内部的属性和方法
//当对象被实例化后,构造函数会立即执行它所包含的任何代码
function myObject(msg){
    //特权属性(公有属性)
    this.myMsg = msg; //只在被实例化后的实例中可调用
   
    //私有属性
    var name = '豪情';
    var age = 29;
    var that = this;
   
    //私有方法
    function sayName(){
        alert(that.name);
    }
    //特权方法(公有方法)
    //能被外部公开访问
    //这个方法每次实例化都要重新构造而prototype是原型共享

,所有实例化后,都共同引用同一个
    this.sayAge = function(){
        alert(name); //在公有方法中可以访问私有成员
    }
    //私有和特权成员在函数的内部,在构造函数创建的每个实例

中都会包含同样的私有和特权成员的副本,
    //因而实例越多占用的内存越多
}
//公有方法
//适用于通过new关键字实例化的该对象的每个实例
//向prototype中添加成员将会把新方法添加到构造函数的底层中


myObject.prototype.sayHello = function(){
    alert('hello everyone!');
}
//静态属性
//适用于对象的特殊实例,就是作为Function对象实例的构造函数

本身
myObject.name = 'china';
//静态方法
myObject.alertname = function(){
    alert(this.name);
}
//实例化
var owerFn = new myObject('111');
owerFn.sayHello();
//owerFn.sayAge();

相关文章

精彩推荐