javascript的闭包与原型

来源:百度知道 编辑:UC知道 时间:2024/06/25 09:44:06
在构造对象时,使用闭包,就是最普遍的:
function a(b){
this.say=function(){
alert(b);
}
}
变量b可以被之下的say方法访问.
但是在使用原型定义方法时:
function a(b){}
a.prototype.say=function(){
alert(b);
}
say方法不能直接访问b变量.

为此必须得:
function a(b){
this.type=b;
}
a.prototype.say=function(){
alert(this.type);
}
可以使得say方法访问b,但是a的每个实例都多了一个type属性.

那么有没有方法可以使得在say方法使用原型链构成,同时a又不会多出一个属性?

你的 b 既然是做为对象a的参数,肯定是做为需要存储并且被多次使用的属性,如果只是少数几个方法调用b,就直接让b做为方法的参数似乎就可以了~
<script type="text/javascript">
function a(){}

a.prototype.say=function(b){
alert(b);
}
var x=new a();
x.say("xx");
</script>

如果是你这个传入的b参数,会在很多地方使用的话,多加一个type属性,好像还蛮划算的吧~~

function a(b){
this.type=b;
}