找不到我问题的正确标题。发帖可能是一个不合适的问题。但我对Object.defineProperty()
String.fromCharCode(str)
等方法有疑问。我的意思是所有对象都来自{ {1}}和字符串继承形式Object.prototype
。string.prototype
对象具有属性和方法,如object.prototype.hasOwnProperty(),object.prototype.isEnumerable()等。类似string.prototype具有string.prototype .split等methods.Every对象继承自其原型链。所以我们可以在对象本身上调用它们,如myobj.hasOwnProperty('prop')和mystring.split()等。
但是有一些方法Object.prototype
。像Object.defineProperty(obj,name,{}),Object.getOwnPropertyNames(myobj)和String.fromCharCode()。它们不在原型对象中。原型对象上的方法源于Object.prototype。我可以跟踪它们的来源。我在控制台中试过。我在 proto 中搜索,它们无处可去。我的问题是它们是什么它们来自哪里?
takes the object itself as arguments
答案 0 :(得分:4)
他们指的是Object
对象(或Array
对象的Array.isArray
对象的属性,以及案例中的Math
对象Math.min
等等。您可以在the specification中找到它们。
请记住,在JavaScript中,函数是对象。因此Object
函数可以在其上具有属性,并且像所有属性一样,这些属性可以引用(其他)函数对象。所以,就像Object.prototype.toString
是一个属性,它指的是处理普通对象toString
的函数,Object.defineProperty
是一个属性,它引用一个函数来处理你传入的对象的属性。它
有时他们会被称为静态"方法(而不是"实例"或"原型"方法),但该术语与基于类的语言更相关,并且不适合JavaScript。它们只是函数,由对象的属性引用。