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

  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>


GCT1015
浏览 391回答 1
1回答

弑天下

我觉得应该是这样: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,需要进行对象拷贝,这个我也不是很了解,你查一下资料吧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript