Javascript真是门非常独特的动态语言,整体设计都是基于作用域链的,就这点它就和与其它语言有巨大的差别,在Javascript中Function即对象,没有像其它语言一样有类和继承的概念,但在ES6中出现的新语法就有class的等OOP风格语法

字面量

// 字面量
var Person = {
    name: "freax",
    age: 23,
    say: function () {
        console.info(this.name);
    }
};

new 构造函数

var o = new Object();
var array = new  Array();

原型

//code

Obejct.create()

继承某个对象的属性和方法

var o1 = Object.create({age:'',sayName: function () {       //o1继承age属性和sayName 方法
    console.info(this.name);
}});

不继承任何属性和方法,即创建一个空对像

var o2 = Object.create(null);

继承原型,和直接量{},new Object()一样

var o3 = Object.create(Object.prototype);

Object.create 和new 构造函数,{} 不同之处在于Object.create 方法可以继承任意对象