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>
我觉得应该是这样:
以
var a = createPerson('小明')
为例,执行createPerson
函数,在函数内部创建新对象,然后把属性和方法都挂载在新对象之后,返回这个对象。第二次也是同样的道理,每次都是
new
一个空的对象,赋值后返回。a
和b
这两个对象是没有关联的。修改一下答案,我明白你的问题了,是这样的:
执行
a = createPerson('小明')
之后,a
得到的是这个函数返回的对象,执行时会进入这个函数的上下文,执行之后,这个上下文是被销毁掉的,在全局上下文只有这个函数的声明。不知道你懂了没,就是执行
a = createPerson('小明')
并不是把值和引用给a
。如果要把引用给 a,应该是这样写的:
如果想把函数的值给 a,需要进行对象拷贝,这个我也不是很了解,你查一下资料吧。