原型链

  1. 创建对象的几种方法
1.字面量
  var o={name:'FBB'};
  var o2=new Object({name:'FBB'});
2.构造函数
  function M(name){
    this.name=name;
  }
  var o3=new M('FBB');
3.Object.create()
  var p={name:'FBB'};
  var o4=Object.create(p);
  1. 原型/构造函数/实例/原型链
__proto__属性,指向了创建该对象的构造函数的原型
每个对象都有__proto__属性,Object.prototype.__proto__=null
对象是函数创建的,那么对象的__proto__要指向创建它的构造函数的原型,Object.__proto__==Function.prototype
Function的特殊性Function.__proto__===Function.prototype,函数也是被Function创建的,那么函数的__proto__也应该指向Function的原型,这是一个环形结构,函数的prototype和__proto__属性指向同一个对象
  1. instanceof原理
object instanceof constrictor
instanceof运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性

function instance_of(L,R){
  const R_P=R.prototype;
  L=L.__proto__;
  while(true){
    if (L===null) {
      return false;
    }
    if (L===R_P) {
      return true;
    }
    L=L.__proto__;
  }
}
  1. new运算符
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容