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对象的原型呢?
7 个解决方案
#1
呵呵,前面就是定义一个extend的函数阿,后面就是调用这个函数给String加一些功能阿。
#2
是String类型的原型
#3
是的,就是在JS中进行类的继承
#4
1. 前者是定义extend函数,后者是“调用”extend函数
2. 是直接扩展了构造函数String的原型,这样做之后所有的string对象就具有了扩展的方法了
2. 是直接扩展了构造函数String的原型,这样做之后所有的string对象就具有了扩展的方法了
#5
谢谢您的回答,还是想请教个问题,function extend(t,s){},这个extend函数应该是一个对象啊,对象有构造函数String吗?是不是应该说成“它的Constuctor构造器是String类型呢”?我对构造器不是很懂。谢谢。
#6
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);
#7
I see!
谢谢Objector,very thanks!
谢谢Objector,very thanks!
#1
呵呵,前面就是定义一个extend的函数阿,后面就是调用这个函数给String加一些功能阿。
#2
是String类型的原型
#3
是的,就是在JS中进行类的继承
#4
1. 前者是定义extend函数,后者是“调用”extend函数
2. 是直接扩展了构造函数String的原型,这样做之后所有的string对象就具有了扩展的方法了
2. 是直接扩展了构造函数String的原型,这样做之后所有的string对象就具有了扩展的方法了
#5
谢谢您的回答,还是想请教个问题,function extend(t,s){},这个extend函数应该是一个对象啊,对象有构造函数String吗?是不是应该说成“它的Constuctor构造器是String类型呢”?我对构造器不是很懂。谢谢。
#6
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);
#7
I see!
谢谢Objector,very thanks!
谢谢Objector,very thanks!