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

关于创建的对象在内存中怎么查看?

关于创建的对象在内存中怎么查看?

GCT1015 2018-12-11 18:15:34
  function createPerson(name){            var obj = new Object();            obj.name = name;            obj.showName = function(){                alert( this.name );            };            return obj;        }            console.log(createPerson('')==createPerson(''),"obj");//显示为false说明是两个不同的对象        createPerson('小明');        createPerson('小强');//1、现在我想证明“小强”的创建没有覆盖“小明”需要证明操作的?2、或者说是createPerson('小明');的创建之后一直是保存在内存中的,我需要证明和查看呢?</script>
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

我觉得应该是这样:


var a = createPerson('小明')

var b = createPerson('小强')

console.log(a)

console.log(b)

console.log(a.showName === b.showName) //false

以 var a = createPerson('小明') 为例,执行 createPerson 函数,在函数内部创建新对象,然后把属性和方法都挂载在新对象之后,返回这个对象。

第二次也是同样的道理,每次都是 new 一个空的对象,赋值后返回。

a 和 b 这两个对象是没有关联的。


修改一下答案,我明白你的问题了,是这样的:

执行 a = createPerson('小明') 之后,a 得到的是这个函数返回的对象,执行时会进入这个函数的上下文,执行之后,这个上下文是被销毁掉的,在全局上下文只有这个函数的声明。

不知道你懂了没,就是执行 a = createPerson('小明') 并不是把值和引用给 a。

如果要把引用给 a,应该是这样写的:


a = createPerson

如果想把函数的值给 a,需要进行对象拷贝,这个我也不是很了解,你查一下资料吧。


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

添加回答

举报

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