为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2018-12-11 17:19:51
<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是对象的两个不同的实例,是不同的东西,不相等。


查看完整回答
反对 回复 2019-01-18
  • 1 回答
  • 0 关注
  • 678 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信