原型链

  • 创建对象有几种方法
  • 原型,构造函数,实例,原型链
  • instanceof的原理
  • new运算符
创建对象有几种方法
            //第一种方式:字面量
            var o1={name:'o1'};
            var o2=new Object({name:'o2'});
            //第二种方式:通过构造函数
            var M=function(name){this.name=name};
            var o3=new M('o3');
            //第三种方式:Object.create
            var p={name:'p'};
            var o4=Object.create(p);//答出来加分!!


为什么o4对象没有显示name,因为o4本身是一个空对象,通过Object.create()把o4的proto指向传入对象,也就是说传入的对象为o4的原型。所以o4本身是没有name属性的,通过原型链查找到p才会有name属性。

原型,构造函数,实例,原型链
instanceof的原理

原理:判断实例对象的protp与构造函数的prototype引用的是不是同一个地址。
只要是在一条原型链上的都会返回true。


怎么区分是哪个对象的实例

用constructor比用instanceof要严谨一些。

new运算符
        

注意:若构造函数中没有返回值或返回值是基本类型(Number、String、Boolean)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。


你可能感兴趣的:(原型链)