首页 > 编程语言 > 详细

JavaScript 通过prototype改变原型的两种方式

时间:2020-08-04 11:44:30      阅读:91      评论:0      收藏:0      [点我收藏+]
// -------------------- prototype 1 --------------------
function A(){}

A.prototype.n = 1
let b = new A()  

A.prototype.n = 2
A.prototype.m = 3
let c = new A()

console.dir(b) // {n: 2, m: 3}
console.dir(c) // {n: 2, m: 3}

// -------------------- prototype 2 --------------------
function A(){}
A.prototype.n = 1  
let b = new A()  // 实例的 _proto__ 与构造函数的 prototype 指向同一个地址.

A.prototype = {n:2,m:3} // 这里把构造函数的 prototype 指向了别的地址,所以实例的 __proto__ 和构造函数的 prototype 不再指向同一个地址了
let c = new A()
console.dir(b) // {n: 1}  而前者的A.prototype改变了地址,指向了{n:1, m:2},所以不会影响先前创建的实例b
console.dir(c) // {n: 2, m: 3}

/**
 * A.prototype.n是添加属性n的值,A.prototype={n:1,m:2}是用{n:1,m:2}对象覆盖了prototype其他的属性
 * 使用.的形式还是操作原先的内存指向, 而等号就是重新赋值了
 */

JavaScript 通过prototype改变原型的两种方式

原文:https://www.cnblogs.com/leslie1943/p/13431937.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!