您的位置:首页 > Web前端 > JavaScript

JS中的对象联姻:call方法

2016-07-12 22:21 471 查看
<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: