Javascript对象类型

问题描述:

var foo = Object.create(null); //complete empty 
var bar = {}; //empty object 
var don = function(){ 
    //like template, need new to create an object 
}; 

console.log(foo); //Object (no properties) 
console.log(bar); //Object (__proto__) 
console.log(new don); //don{} (__proto__) 

我是javascipt oop的新手,我有一个关于对象类型的问题。Javascript对象类型

什么是不同的,如何使用这些对象?

+0

可能重复的[JavaScript中的Prototypical OO](http://*.com/questions/6526241/prototypical-oo-in-javascript) – raam86

foo是没有原型和属性的对象。

bar是从Object继承的新对象。它继承了Object的所有属性和方法。

don是对象的一个​​构造函数。 new don()将在新对象中创建对象并将属性constructor设置为don

+0

bar是从obj继承而来的,哪个obj? –

{}相当于Object.create(Object.prototype),它继承了Object.prototype的所有属性和方法,包括'isPrototypeOf'和'hasOwnProperty'方法或属性。
Object.create(null)创建一个不会继承任何属性或方法的对象,因此如果您像这样使用它:Object.create(null).hasOwnProperty('xx'),它将触发一个错误:“对象不支持属性或方法'hasOwnProperty'“。
Object.prototype.isPrototypeOf(函数(){}。原型)返回真,这意味着“新DON()”也继承所有从Object.prototype中的属性和方法。
的Object.create(空)的构造& {}是对象,howerver, '新DON()' 的构造是函数(){}。