原型与原型链

记录一下js中比较基础且重要的原型

<!doctype html>
<html lang="en">
<head>
<meta chatset="UTF-8>
<title>原型与原型链</title>
</head>
<script type="text/javascript">
function AAA() { // 内部语句
// this.prototype = {}
// this.prototype = new Object() // 与上面{} 效果相同
// 构造函数 (每个函数都是构造函数)
}
AAA.prototype.bbb = function () {
}
AAA.prototype.ccc = function () {
}
var bbb = new AAA() // 内部语句 this.__proto__ = AAA.prototype
console.log(AAA.prototype) // 原型对象(显式原型) 创建函数时添加的
console.log(AAA.prototype.constructor) // 构造函数
console.log(bbb.__proto__) // 原型对象(隐式原型) 创建对象的时候添加的

// 给原型对象添加属性(一般是方法)=》实例对象可以访问
</script>
</html>

原型与原型链

原型链(全称: 隐式原型连)

  • 所有函数的__proto__都相等(注意这里不是对象,是函数
  • 实例对象的隐式原型等于构造函数显式原型
  • Object的原型对象是原型链的尽头 (Object.__proto__
  1. 读取对象属性值时,会自动到原型链中查找
  2. 设置对象的属性值时,不会查找原型链,如果当前对象中没有此属性,会直接添加此属性并设置值
  3. 方法一般会定义在原型中,属性一般通过构造函数定义在对象本身上

// Object是Function.prototype的实例对象

  • 所有函数的原型对象都是Object的实例对象,Object除外

1. 函数的显示原型指向的对象默认是空Object实例对象(但Object不满足)
2. 所有函数都是Function的实例(包含Function)
3. Object的原型对象是原型链的尽头

 

console.log(Object.prototype._proto_) // null

文章版权声明

 1 原创文章作者:,如若转载,请注明出处: https://www.52hwl.com/38321.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年7月15日
下一篇 2023年7月15日