js原型和原型链原理理解

原型:构造函数的一个属性,从构造函数new出来的对象都会继承这个原型,
即原型是所有构造函数创建出来的对象的祖先,这些对象共同拥有原型上的属性和对象
原型也是一个对象

Person.prototype.name = 'sunny'
 function Person() {
    	// this = {
    	//		__proto__: Person.prototype
    	// }
  }
  var person = new Person();
  Person.prototype.name = 'chrrey';
  console.log(person.name) // chrrey
  
  // 引申
  var obj = {name: 'a'};
  var obj2 = obj;
  console.log(obj2.name); // a
  obj = {name: 'b'};
  console.log(obj2.name); // a
// obj2 = obj 的赋值语句实际上是 指把obj指向的空间地址赋给obj2
// 当obj重新赋值时,也就是obj指向的空间地址变了,但obj2的指向却没变
// 所以打印出来的name属性值不变
// 同理,看如下的代码
Person.prototype.name = 'sunny'
function Person() {
    	// this = {
    	//		__proto__: Person.prototype
    	// }
 }
 var person = new Person();
 Person.prototype = {
 	name: 'chrrey'
};
console.log(person.name); // sunny
Person.prototype = {
	name: 'sunny'
}
person.__proto__ = Person.prototype;
Person.prototype = {
	name: 'chrrey'
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值