1.創(chuàng)建對象有幾種方法
//第一種方式:字面量
var o1 = {name:'o1'};
var o2 = new Object({name:'o2'});
//第二種方式:通過構(gòu)造函數(shù)
var M = function(name){this.name = name;}
var o3 = new M('o3');
//第三種方式:Object.create
var p = {name:'p"};
var o4 = Object.create(p);
結(jié)果展示:

image.png
2.原型、構(gòu)造函數(shù)、實例、原型鏈

image.png
M.prototype.constructor===M
O3.__proto__===M.prototype
原型對象的方法是被不同的實例共有的
//第二種方式:通過構(gòu)造函數(shù)
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
- 只有函數(shù)才有prototype,對象是沒有的;
- 只有實例才有proto
M.__proto__===function.prototype
//M的構(gòu)造函數(shù)是function,M是function函數(shù)的實例
3.instanceof的原理

image.png