【问题标题】:Javascript object typeJavascript 对象类型
【发布时间】:2016-12-26 11:40:58
【问题描述】:
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


【解决方案1】:

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

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

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

【讨论】:

  • bar是继承自obj,是哪个obj?
【解决方案2】:

{} 等价于 Object.create(Object.prototype),它继承了 Object.prototype 的所有属性和方法,包括 'isPrototypeOf' 和 'hasOwnProperty' 方法或属性。
Object.create(null) 创建一个不继承任何属性或方法的对象,所以如果你这样使用它:Object.create(null).hasOwnProperty('xx'),就会触发错误:“Object doesn't '不支持属性或方法'hasOwnProperty' "。
Object.prototype.isPrototypeOf(function(){}.prototype) 返回 true,表示 'new don()' 也继承了 Object.prototype 的所有属性和方法。
Object.create(null) & {}的构造函数是Object,但是'new don()'的构造函数是function(){}。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多