<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>
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
问题1:
在JS中,对象和函数是引用类型,也就是说,它们在赋值给其它变量时,只是把它自己的引用地址赋值给其它变量,而不是新建一个对象或函数。
问题1,可以解释为,p1和p2都只是被赋值了函数fn1的引用地址,所以,他们的值是相等的。
问题2:
第二个例子中,fn1是被当做一个对象。当执行下面这两句时:
var p1= new fn1;
var p2= new fn1;
会对对象fn1进行初始化,也就说p1和p2是对象fn1的实例,当对象被初始化为实例时,是会先执行对象的。至于,什么是对象?什么是实例?请自行搜索查询解释。
所以,p1和p2是对象的两个不同的实例,是不同的东西,不相等。
添加回答
举报
0/150
提交
取消