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对象类型
什么是不同的,如何使用这些对象?
foo
是没有原型和属性的对象。
bar
是从Object
继承的新对象。它继承了Object
的所有属性和方法。
don
是对象的一个构造函数。 new don()
将在新对象中创建对象并将属性constructor
设置为don
。
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()' 的构造是函数(){}。
可能重复的[JavaScript中的Prototypical OO](http://*.com/questions/6526241/prototypical-oo-in-javascript) – raam86