Object.defineProperty,String.fromCharCode()等方法的起源

时间:2014-10-17 07:21:47

标签: javascript

找不到我问题的正确标题。发帖可能是一个不合适的问题。但我对Object.defineProperty() String.fromCharCode(str)等方法有疑问。我的意思是所有对象都来自{ {1}}和字符串继承形式Object.prototypestring.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

1 个答案:

答案 0 :(得分:4)

他们指的是Object对象(或Array对象的Array.isArray对象的属性,以及案例中的Math对象Math.min等等。您可以在the specification中找到它们。

请记住,在JavaScript中,函数是对象。因此Object函数可以在其上具有属性,并且像所有属性一样,这些属性可以引用(其他)函数对象。所以,就像Object.prototype.toString是一个属性,它指的是处理普通对象toString的函数,Object.defineProperty是一个属性,它引用一个函数来处理你传入的对象的属性。它

有时他们会被称为静态"方法(而不是"实例"或"原型"方法),但该术语与基于类的语言更相关,并且不适合JavaScript。它们只是函数,由对象的属性引用。