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