奋斗。!

奋斗~

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 2 文章 :: 0 评论 :: 0 Trackbacks
一般我们在使用javascript中的类的时候,都是通过new来实例化这个类得到一个对象。

使用new这个关键字,会改变函数上下文环境,并且改变了return语句的行为。

比如一个Person类如下:

function Person() {
    this.name = "hello";
}; 

当我们new Person的时候,改变的函数执行的上下文,因此,这个类拥有了一个属性name,值为hello。 同时new还会改变return 语句的行为,会返回这个Person实例。

然而当我们直接调用Person()方法的时候,由于没有使用new关键字,因此函数执行的上下文没有改变,依然是window。

因此window多了一个属性name,值为hello。

测试代码如下:

 1 var Person = function(name) {
 2     this.name = name;
 3 };
 4 
 5 var format = new Person('format');
 6 
 7 console.log(format instanceof Person);
 8 
 9 console.log("window property -> name:" + this.name);
10 
11 Person('format');
12 
13 console.log("window property -> name:" + this.name);

结果如下:



理解了上面所说的原理之后,开始构建javascript"类"库。

var Class = function() {
    var klass = function() {
        this.init(arguments);
    };
    klass.prototype.init = function() {};
    return klass;
};

var Person = new Class;

Person.prototype.init = function() {
    //类似构造方法。可以在这里做一些初始化操作。
}

//由于Class返回的依旧是一个函数,也就是类。因此我们可以实例化这个类。 得到实例对象
var person = new Person;

....

有了这个类库之后, 当我们需要自己的类的时候,只需要new Class即可。 然后根据需求写自己的初始化代码。

posted on 2012-07-16 23:15 丶format丨 阅读(88) 评论(0)  编辑  收藏 所属分类: javascript提高

只有注册用户登录后才能发表评论。


网站导航: