原始的原型链是怎样玩的

带着问题看代码:

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
相关推荐
打瞌睡的朱尤几秒前
Vue day11商品详细页,加入购物车,购物车
前端·javascript·vue.js
Web打印1 分钟前
Phpask(php集成环境)之01安装Apache
开发语言·php·apache
Zachery Pole2 分钟前
JAVA_07_面向对象
java·开发语言
dc_00123 分钟前
Java进阶——IO 流
java·开发语言·python
SuperEugene6 分钟前
《对象与解构赋值:接口数据解包的 10 个常见写法》
前端·javascript
沐知全栈开发7 分钟前
DOM 遍历
开发语言
桂花很香,旭很美9 分钟前
[7天实战入门Go语言后端] Day 3:项目结构与配置——目录组织、环境变量与 viper
开发语言·数据库·golang
Lun3866buzha9 分钟前
内窥镜设备部件检测与识别——基于Mask R-CNN的改进模型训练与实现
开发语言·r语言·cnn
Never_Satisfied12 分钟前
在JavaScript中,如何给字符串数组中的元素去重
开发语言·javascript·ecmascript
测试_AI_一辰15 分钟前
项目实战15:Agent主观题怎么评测?先定底线,再做回归
开发语言·人工智能·功能测试·数据挖掘·ai编程