<script type="text/javascript">
var me = function (){
this.money = 100;
this.show = function(){
alert("我有"+this.money+"块");
}
}
var mm = function(){
this.money = 20;
}
// 实例化mm
var mm1 = new mm();
alert(mm1.money); //20
// 联姻
me.call(mm1);
mm1.show(); //我有100块
</script>
分析:mm本来的money值是20,但被me.call之后,也可以调用me里的方法了,并且同名属性的值也被覆盖了。
一般的写法:
var me = function (){
this.money = 100;
this.show = function(){
alert("我有"+this.money+"块");
}
}
var mm = function(){
this.money = 20;
this.age = 18;
// 联姻
me.call(this);
}
// 实例化mm
var mm1 = new mm();
alert(mm1.age); //18
mm1.show(); // 我有100块
关于同名属性覆盖:
var me = function (){
this.money = 100;
this.show = function(){
alert("我有"+this.money+"块");
}
}
var mm = function(){
// 联姻
me.call(this);
this.money = 20;
this.age = 18;
}
// 实例化mm
var mm1 = new mm();
alert(mm1.age); //18
mm1.show(); // 我有20块
在mm函数内部,me.call(this)
在一开始执行了,后面的this.money=20
覆盖了所以下面mm1.show()打印结果为20