Javascript 对象如何比实际对象具有更多的功能?

Javascript 对象如何比实际对象具有更多的功能?,javascript,Javascript,我不明白为什么var obj={}或var obj=新对象()然后obj.getOwnPropertySymbols未定义 对象本身定义了一些方法,例如。这些没有在对象上定义。prototype,因此它们在对象实例上不可用。从技术上讲,对象(构造函数)不是对象的类型,它是一个类/函数,具体取决于您希望在JS中使用的术语。因为它是一个类,所以它上面有在该对象的实例中不使用的方法。IE:它们不在返回的对象原型上 在Chrome控制台中,尝试以下操作: var obj = {}; typeof

我不明白为什么
var obj={}
var obj=新对象()然后
obj.getOwnPropertySymbols
未定义




对象本身定义了一些方法,例如。这些没有在对象上定义。prototype
,因此它们在对象实例上不可用。

从技术上讲,
对象
(构造函数)不是对象的类型,它是一个类/函数,具体取决于您希望在JS中使用的术语。因为它是一个类,所以它上面有在该对象的实例中不使用的方法。IE:它们不在返回的对象原型上

在Chrome控制台中,尝试以下操作:

var obj = {};
typeof obj; // "object"
typeof Object; // "function"
如果有机会,可以研究类原型在JS中的工作方式

要澄清一点,当您运行
newobject()
时,它会返回类型为
Object
的内容,其中包含必要的方法

我认为这是我所说内容的一个很好的参考:

您可以在
Number
String
中看到相同的行为。这两种类型的实际上都是
函数
,但一旦创建了它们,就会得到一种类型的
数字
字符串
,每种类型都有相应的原型方法


底线是构造函数与返回值不同。构造函数有两种不同的方法:

  • 原型方法

    定义为构造函数.prototype的属性,仅在实例上可用

  • 静态方法

    定义为构造函数本身的属性,仅在构造函数上可用

ES6课程请讲清楚

class Constructor {
  static foo() { return 123; }
  bar() { return 456; }
}
Constructor.foo(); // 123
Constructor.bar;   // undefined
new Constructor().foo; // undefined
new Constructor().bar; // 456
然而,您的情况很特殊:
对象
构造函数的静态方法似乎包括原型方法。但这是因为
Object
继承自
Object.prototype

这些原型链就像

  • 对象
    实例

    instance -> Object.prototype -> null
    
  • 对象
    构造函数

    Object -> Function.prototype -> Object.prototype -> null
    

你在使用哪种IDE?这是在chrome中,不确定你在chrome中到底是怎么做的?
CMD+Option+J
或pcbrowser上的
Control+Shift+J
仍然有一些不推荐的方法:该死,是的,我不知道这对我来说怎么不明显,不在原型上添加帮助函数是很奇怪的。例如,如果发生这种情况,你将无法定义一个名为
keys()
的方法,这将是一场向后兼容性的噩梦字符串或数字是什么?@JordanHendrix事实上不是。这句话就是我为什么要Dv的原因,现在它不见了,放松,伙计-我的意思和Oriol一样did@JordanHendrix都是好人。我只是想得到DV的反馈,我在回答问题时考虑了很多,所以如果是错误的,我想知道原因。在你的情况下,我理解,仍然不确定DVs是做什么的。哈哈,你必须比我解释得更好+1