素材牛VIP会员
函数被原型下定义之后,创建对象时内存只保持一个函数,那么对象的属性是被单独保存的吗(创建n个对象,内存中就有n个属性的值?
 阵***香  分类:JavaScript  人气:601  回帖:2  发布于6年前 收藏

<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>

 标签:htmljavascript

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv4 码徒
13***64 软件测试工程师 6年前#1

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

Lv6 码匠
lo***yo UI设计师 6年前#2

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取