• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
smileyqp
https://github.com/smileyqp
博客园    首页    新随笔    联系   管理    订阅  订阅

(二)JavaScript之原型到原型链

每个函数都有一个 prototype 属性;并且prototype是函数才会有的属性

函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型;每一个对象都会从原型"继承"属性

function Cat() {

}
Cat.prototype.name = '布丁';
var cat1 = new Cat();
var cat2 = new Cat();
console.log(cat1.name) // 布丁
console.log(cat2.name) // 布丁

函数的prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是上面例子重中的cat1和cat2的原型;即Cat.prototype是原型。那么,实例化出来的对象与原型什么关系呢?
每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型。即

	cat1.__proto__ === Cat.prototype

原型都有一个 constructor 属性指向关联的构造函数,即:

	Cat === Cat.prototype.constructor

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

简而言之的总结:
  • Cat.prototype === cat1.__proto__ 	//该对象原型得出的相等关系
    
  • Cat === Cat.prototype.constructor		//方法等于原型的构造器
    
  • 读取实例的属性时会去去找原型的原型,一直找到最顶层为止;原型也是对象
    
  • Function.prototype 和 Object.prototype 是两个特殊的对象等于null,由引擎来创建
    
posted @ 2019-08-27 19:07  smileyqp  阅读(98)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3