• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

joer717

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

原型链

1.创建对象有几种方法、

//字面量

var object = new Object({name:1})

var o1 ={name:1}

//构造函数

var M = function(m){

this.name =m

}

var o2 =  new M(3);

//object.create方法

var p = {name:1}

var o4 = Object.create();

2.原型 构造函数 实例 原型链

对象就是一个实例

new后面的就是一个构造函数

构造函数可以new一个实例

任何一个函数都可以作为构造函数

构造函数都有属性prototype 初始化一个空对象(原型对象)

构造器默认你声明的函数,来让原型对象知道自己是被哪个构造器构造的

constructor函数指向的是构造函数

实例.__proto__ === 构造函数.原型对象

原型链

object.prototype是原型链的顶端

在实例中没有找到的话。会向他上一层找,一直找到object.prototype,如果还没有找到就返回未定义

 

 自我理解总结:

 实例是由构造函数来生成的,但是跟他不是直接挂钩的  与构造函数的属性prototype的原型对象挂钩的

关系:实例.__proto__ === 构造函数.原型对象

原型对象的constructor函数 === 构造函数

构造函数都有属性prototype 是一个空对象,也就是原型对象

原型链

3.instanceof的原理 :识别正在处理的对象的类型

o3是不是m的实例

o3 instanceof m === true   //判断 o3是否是m的实例

o3 instanceof Object === true

o3.__proto__ === M.prototype

M.prototype.__proto__ === Object.prototype

o3.__proto__.constaructor === m  === true  //找到他的原型对象的constaructor 就是他的构造函数  是不是 m

o3.__proto__.constaructor === object  === false

构造函数也是一个对象

constaructor比instanceof更严谨

 

4.new运算符的原理

 

一个对象被new  继承构造函数的原型对象foo.prototype

构造函数被执行,this要指定新实例  new foo === new foo()

 

posted on 2019-04-09 15:43  joer717  阅读(83)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3