JavaScript原型对象动态性

function的原型对象的动态性

<script>
//创建一个自定义构造函数
function Person(){
}
//通过new 关键字获取到函数的对象
//此时的obj变量内容是一个指向 function Person() 构造函数的原型对象(__proptype__)的地址

var obj = new Person();

//在 function Person的原型上添加属性,
Person.prototype.name = 'taotao';
Person.prototype.age = 10;
Person.prototype.getHello= function(){ alert(this.name)};

//调用Person 实例对象,可以实现打印taotao
obj.getHello()


//2如果给原型从新指向一个新的属性对象再去调用,就会把原型对象重新指向一个新的对象地址,
//而实例对象的obj 还是指向上没有赋值新属性对象的原型地址,在实例对象后面修改原型对象,
//导致实例对象调用不到后修改的原型对象
//创建一个自定义构造函数
function Person(){
}
//通过new 关键字获取到函数的对象
//此时的obj变量内容是一个指向 function Person() 构造函数的原型对象(__proptype__)的地址
var obj = new Person();

//在 function Person的原型上重新赋值,会导致开辟新的内存空间,导致prototype的指向的地址更改,
//而实例对向obj地址没有改变,故找不到对应的属性
Person.prototype = {
  name : 'taotao',
age :10,
getHello:function(){ alert(this.name)
  constructor:Person
}
//调用Person 实例对象,可以实现打印会出现错误, hetHello undefined
obj.getHello()

//3 如何解决上面的问题
// 只需要修改一下new Person() 与 Person.prototype 赋值的实例,
// 这样在obj = new Persion(), obj 指向的地址就是
Person.prototype
// 修改后的地址

function Person(){
}
Person.prototype = {
  name : 'taotao',
age :10,
getHello:function(){ alert(this.name)
  constructor:Person
}
var obj = new Person();
obj.getHello()
 





</script>

 

posted on 2022-09-13 07:46  totau  阅读(20)  评论(0编辑  收藏  举报

导航