老师,有个问题想请教一下。

老师,有个问题想请教一下。

<!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的实例话,不是应该它的属性也是在原型链上了,其他实例的属性不是一起改吗?这个有点想不通。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,new实例化出不同的对象,实例属性和方法是私有的,互不干扰,原型上的是共享的。所以如果想改变一个影响另一个,可以将实例属性的color修改为原型上的color,如下:

https://img1.sycdn.imooc.com//climg/61cecc7109c1de0606630445.jpg

https://img1.sycdn.imooc.com//climg/61cecc8e0904d4f704060054.jpg

祝学习愉快!

  • 慕桂英1352525 提问者 #1

    老师,我下面用另一个构造函数通过call之前那个Fu,这种方法的继承是不是实例属性也是独立的

    2021-12-31 17:31:29
  • 好帮手慕星星 回复 提问者 慕桂英1352525 #2

    是独立的,call()方法继承的是实例属性和方法,不能继承原型上的。

    2021-12-31 18:07:55
好帮手慕星星 2022-01-06 13:27:56

同学你好,抱歉之前老师回答的不全面。

代码中进行了实例继承和原型继承

https://img1.sycdn.imooc.com//climg/61d67ccb09217e6305780285.jpg

这样实例和原型上都会有color属性。而改变color属性值时,会先从实例上找,存在就会改变实例上的

https://img1.sycdn.imooc.com//climg/61d67d1609e4fd0005500149.jpg

实例属性是私有的,所以stu2上的实例属性color值不会改变。

如果将实例继承去掉,只原型继承

https://img1.sycdn.imooc.com//climg/61d67d5309799e1103560123.jpg

这样color属性在原型上。改变color值,实例上没有,就会改变原型上的。原型上的是共享的,改变stu1中的color值,也会改变stu2上的color值

https://img1.sycdn.imooc.com//climg/61d67dbb093e104203660257.jpg

https://img1.sycdn.imooc.com//climg/61d67dc9091bf12f05470234.jpg

或者改为老师之前回复哪种写法也可以。

祝学习愉快~

  • 提问者 慕桂英1352525 #1

    给老师点赞点赞,谢谢老师回头还再来帮我解答

    2022-01-06 13:30:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师