原型链

1.创建对象有几种方法

//第一种方式:字面量
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);

结果展示:

image.png

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

image.png
M.prototype.constructor===M
O3.__proto__===M.prototype

原型对象的方法是被不同的实例共有的
//第二种方式:通过构造函数
var M = function(name){this.name = name;}
var o3 = new M('o3');
//第三种方式:Object.create
var p = {name:'p"};
var o4 = Object.create(p);

M.prototype.say = function(){
    console.log('say hi');
}
var o5 = new M('o5');
image.png

Object.prototype

  • 只有函数才有prototype,对象是没有的;
  • 只有实例才有proto
M.__proto__===function.prototype

//M的构造函数是function,M是function函数的实例

3.instanceof的原理

image.png

4.new运算符

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