javascript原型方法问题

 我来答
Bobormer
2012-07-19 · TA获得超过194个赞
知道答主
回答量:89
采纳率:0%
帮助的人:35.7万
展开全部
每个javascript对象都有一个原型对象(简称原型),这个原型是由该对象的构造函数所定义
(javascript自动创建的),并且对象继承原型的所有属性和方法(函数),比如 一个String对象
的原型为 String.prototype ,如果我们想要给String类添加方法,可以这样做(比如添加常用的
trim()方法):
js 代码
String.prototype.trim = function (){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
这个特性是相当令人惊讶的,因为这破坏了封装性,就好像在Java中你可以对String类直接进行修
改一样。function() 可以当作数据来给左操作数赋值(而不仅仅是当作动作),也跟Java非常地不
同。
对于Javascript内部类都可以这么改,对于自定义类当然可以这么改,如:
js 代码

function Circle(x,y,r){
this.x = x;
this.y = y;
this.r = r;
//this.prototype = null ; /*这句代码可以看作是隐含存在的,因为javascript 中“类”
的定义和函数的定义结构上没有差异,所以可以说,所有函数都隐藏有这样一个属性。*/
}
然后,我们给原型加一个得到面积的方法:

Circle.prototype.area = function(){
return this.r * this.r * 3.14159 ;
}
可以这样使用:
js 代码
var circ = new Circle(0,0,2) ;
alert(circ.area()) ;
当然,我们也可以在类中很轻松的定义我们想要实现的方法,如,还是上面那个求圆面积:
js 代码
function Circle(x,y,r){
this.x = x;
this.y = y;
this.r = r ;
this.area = function (){
return this.r * this.r * 3.14159 ;
}
}
//调用:
var circ = new Circle(0,0,2) ;
alert(circ.area()) ;
两者的调用代码完全一样,那为什么要使用原型呢?主要是为了解决对内部类型的继承问题,也就
是说当你无法修改String的构造函数而想要让所有String实例都具有某一方法的时候,你可以用这
个prototype;或者说,你用这个prototype来模拟实现String类的子类,达到对父类进行扩展的目
的。
lxd391
2012-07-19 · TA获得超过326个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:144万
展开全部
没明白。你得说你要求啥功能的原型啊
追问
不是说,function就是一个对象,
原型可以共享,所以就定义一次原型,之后就不用每次都重新定义方法了。。
还是说,原型定义一次就够了,没必要特意让它一次?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式