原始的原型链是怎样玩的

带着问题看代码:

1、原始的继承是怎样实现继承的? A类的prototype 属性 = B类的实例

2、实现继承后,连B类的中实例的属性(放在了A类的prototype中)和原型链的上的东西都可以用

3、A.prototype.constructor实际上已经指向了B--被重写了(但是不影响对实际代码运行的理解)

4、原型链继承,是往上找,找到了直接就用了,就不再往上找了

javascript 复制代码
function subType (j) {
  this.name = 'subType'
  this.nameJ = j
}
subType.prototype.getValue = function () {
  return  'subType原型上的值'
}

function deviceType (k) {
  this.nameOther = 'deviceTye'
  this.nameK = k
}
// 这种方法实现的继承,就是连constructor中的属性就也给继承了
deviceType.prototype = new subType()
deviceType.prototype.getValueOther= function() {
  return 'deviceType原型链上的值'
}

let instance = new deviceType(99)

// 继承的表现,可以看到自己原型上的,和继承某个实例对象原型链上的东西
console.log(instance.nameOther) // deviceTye
console.log(instance.name) // subType
console.log(instance.getValueOther()) // deviceType原型链上的值
console.log(instance.getValue())  // subType原型上的值

// 这行打印可以看到是怎样的,(继承某个实例的属性)会放在deviceType.prototype.
console.log(instance.__proto__) // { name: 'subType', getValueOther: [Function (anonymous)] }

// 会发现被重写了
console.log(instance.constructor) //  [Function: subType]
// 打印一下完整的原型链
console.log(instance.__proto__.__proto__.constructor) // [Function: subType]

// 虽然被重写了,但是不影响实例化
console.log(instance.nameK)  // 99
console.log(instance.nameJ) // undefined
相关推荐
sunly_8 分钟前
React 三个重要概念:Ref、Props、State 详解
前端·javascript·react.js
Mh15 分钟前
如何使用GSAP实现一个 `pinned` 滚动楼层叙事?
前端·javascript·css
Larcher6 小时前
React Router 不只是页面跳转:从 SPA 路由到权限守卫的完整实践
javascript·后端
Larcher6 小时前
大模型为什么每次回答都不一样?一文搞懂 Temperature、Top K 与 Top P
javascript·后端
名字还没想好☜8 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
eric-sjq10 小时前
10 分钟实战:用 0.6B 本地模型生成中文网页(WanlyFrontend + 编译器全流程)
javascript·机器学习·自然语言处理·html
To_OC10 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
kyriewen11 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
一壶浊酒..12 小时前
Scrape Webpack练习
开发语言·javascript·webpack
命运之光12 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言