<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:
在JS中,对象和函数是引用类型,也就是说,它们在赋值给其它变量时,只是把它自己的引用地址赋值给其它变量,而不是新建一个对象或函数。
问题1,可以解释为,
p1
和p2
都只是被赋值了函数fn1
的引用地址,所以,他们的值是相等的。问题2:
第二个例子中,
fn1
是被当做一个对象。当执行下面这两句时:会对对象
fn1
进行初始化,也就说p1
和p2
是对象fn1
的实例,当对象被初始化为实例时,是会先执行对象的。至于,什么是对象?什么是实例?请自行搜索查询解释。所以,
p1
和p2
是对象的两个不同的实例,是不同的东西,不相等。