函数被原型下定义之后,创建对象时内存只保持一个函数,那么对象的属性是被单独保存的吗(创建n个对象,内存中就有n个属性的值?

<script>
function CreatePerson(name){

this.name = name;//函数被原型下定义之后,创建对象时内存只保持一个函数,那么对象的属性是被单独保存的吗(创建n个对象,内存中就有n个属性的值?)

}
CreatePerson.prototype.showName = function(){
alert( this.name );
};

var p1 = new CreatePerson('小明');
//p1.showName();
var p2 = new CreatePerson('小强');
//p2.showName();

alert( p1.showName == p2.showName ); //true

var arr = new Array();
var date = new Date();

</script>

阅读 1.9k
2 个回答

showname是原型属性,内存共享,即引用相同。
name是实例属性,只有实例化后才能访问,内存独立。

准确的说法是 对象实例 是被单独保存的,即创建n个对象实例,内存中就有n个相互隔离的区域来分别保存每个对象实例。当然每个对象实例的具体属性也保存在对应的区域中。而对象方法可以认为是一种特殊的函数,只有一份,以引用的方式让所有该类对象共享使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题