老师,有个问题想请教一下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>慕淘网</title>
<style>
</style>
</head>
<body>
</body>
<script>
function Fu(){
this.color=['red','blue','green'];
this.adw=function(){alert('我喜欢'+this.color[2])}
}
function NET(){
Fu.call(this);
}
NET.prototype=new Fu();
var stu1=new NET();
var stu2=new NET();
stu1.color.push('yellow');
console.log(stu1.color);
console.log(stu2.color);
</script>
</html>
为什么用了call之后,构造函数的实例属性变化不会影响其他实例的属性,我下面NET的原型链是Fu的实例话,不是应该它的属性也是在原型链上了,其他实例的属性不是一起改吗?这个有点想不通。
正在回答
同学你好,new实例化出不同的对象,实例属性和方法是私有的,互不干扰,原型上的是共享的。所以如果想改变一个影响另一个,可以将实例属性的color修改为原型上的color,如下:
祝学习愉快!
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星