关于 是否是每次new object(函数),就会重复生成一个“函数”内容放在新创建引用地址上?

<script>

    function fn1(){alert(1)}

    var p1=  fn1;

    var p2=  fn1;

    console.log(p1==p2)//true问题1、是否说明fn1把内容和地址分别给了p1和p2,所以两种比较相等

</script>

<script>

    function fn1(){alert(1)}

        var p1= new fn1;//此处我只是多加了一个new为什么函数就开始被执行

        var p2= new fn1;;//此处我只是多加了一个new为什么函数就开始被执行

        console.log(p1==p2)//false问题2,并且p1,p2就不相等了,原因是new创建本身在内存中生成一个新的引用地址的原因吗?


</script>


慕姐4208626
浏览 679回答 1
1回答

GCT1015

问题1:在JS中,对象和函数是引用类型,也就是说,它们在赋值给其它变量时,只是把它自己的引用地址赋值给其它变量,而不是新建一个对象或函数。问题1,可以解释为,p1和p2都只是被赋值了函数fn1的引用地址,所以,他们的值是相等的。问题2:第二个例子中,fn1是被当做一个对象。当执行下面这两句时:var p1= new fn1;var p2= new fn1;会对对象fn1进行初始化,也就说p1和p2是对象fn1的实例,当对象被初始化为实例时,是会先执行对象的。至于,什么是对象?什么是实例?请自行搜索查询解释。所以,p1和p2是对象的两个不同的实例,是不同的东西,不相等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript