function extend(t,s){
each(s,function (k,v){ t[k] = v; });
return t;
}
extend(String.prototype, {
trim: function(r){
r = r || /(^\s+)|(\s+$)/g;
return this.replace(r, "");
},
empty: function(){
return this.trim() === '';
},
lenW: function(){
return this.replace(/[^\x00-\xff]/g, "**").length;
}
});
这里前面顶一个了extend(t,s)函数,后面又有一个extend(String.prototype,{})
我对后面这个extend()的理解是,它定义一些字符串的通用处理方法,貌似是扩展String类型的方法。但我想知道,这前后两个extend有什么关系吗?
还有,我对原型的概念还是不怎么理解,String.prototype,这个原型,是String类型的原型,还是具体某个string对象的原型呢?

解决方案 »

  1.   

    呵呵,前面就是定义一个extend的函数阿,后面就是调用这个函数给String加一些功能阿。
      

  2.   

    1. 前者是定义extend函数,后者是“调用”extend函数
    2. 是直接扩展了构造函数String的原型,这样做之后所有的string对象就具有了扩展的方法了
      

  3.   

    谢谢您的回答,还是想请教个问题,function extend(t,s){},这个extend函数应该是一个对象啊,对象有构造函数String吗?是不是应该说成“它的Constuctor构造器是String类型呢”?我对构造器不是很懂。谢谢。
      

  4.   


    1. 这个extend函数跟String在这里没什么关系的,只是因为你的代码里面碰巧需要用到extend函数来帮助String扩展原型上的功能而已。
    2. extend是函数,函数是对象这没错,但是函数有它自己的构造函数:Function你可以这样去理解,分解开来不就清楚了嘛:function extend(t,s){
        each(s,function (k,v){    t[k] = v; });
        return t;
    }var t = String.prototype;
    var s = {
        trim: function(r){
            r = r || /(^\s+)|(\s+$)/g;
            return this.replace(r, "");
        },
        empty: function(){
            return this.trim() === '';
        },
        lenW: function(){
            return this.replace(/[^\x00-\xff]/g, "**").length;
        }
    };
    // 调用extend函数
    extend(t, s);
      

  5.   

    I see!
    谢谢Objector,very thanks!