是JavaScript中的函数一个对象
is function an object in JavaScript?
函数是JavaScript中的"function"对象吗?如果是这样,当我创建一个构造函数时,比如:
//this is a constructor function
function foo(){
this.name="xx";
}
foo是否有一个名为proto的属性指向函数的原型?我怎样才能看到这处房产?
ps:如果proto是在通过new
关键字创建实例时创建的,为什么function foo
没有它?如上所述,foo
是通过new Function
创建的。
函数是javascript中的对象吗?
是的。
foo是否有一个名为proto的属性指向函数的原型?
没有命名为proto
,没有。这是一个有点令人困惑的领域:
-
所有对象都有一个从中继承的底层原型对象。从ES5开始,您可以通过
Object.getPrototypeOf
获得对该对象的引用(例如,var p = Object.getPrototypeOf(blah)
为您提供对blah
的原型的引用)一些引擎(包括Firefox的SpiderMonkey)也通过伪属性__proto__
提供了底层原型,这将在ES6的规范中,但只有在浏览器中使用JavaScript时才正式提供。 -
另外,所有正常函数都有一个名为
prototype
的属性,这是而不是该函数的原型(见上文)。相反,该对象将被分配为创建的对象的底层原型,该对象使用该函数作为通过new
关键字创建的构造函数。
既然这有点令人困惑,我们就来画一幅画吧。假设我们有这样的代码:
function Foo() {
this.name = "xx";
}
var f = new Foo();
(由于我使用它作为构造函数,所以我使用了名称Foo
而不是foo
来遵守惯例。)
以下是我们现在记忆中的内容:
+------------+|功能||(功能)|+------------++-----------+|__proto__|----+->|(对象)|这是分配给函数的对象|原型|----/+----------------+作为他们的原型+------------+||呼叫|||应用|||绑定|||||+-----------++------------+||Foo|||(函数)||+------------+||__原型__|----+||+----------+|prototype |----+---->|(object)|这是分配给的对象+------------+|+----------+通过`new Foo创建的对象`||(空白)||+----------++-----------+||f|||(对象)||+-----------+||__原型__|-----+|姓名:xx|+-----------+
(为了简化起见,我省略了上面对Object.property
的引用。)
我怎样才能看到这处房产。
如上所述,__proto__
(目前仅在某些发动机上,将是ES6中的标准配置)或通过Object.getPrototypeOf
(ES5)。
示例:
// Shows you the object referenced by Function.prototype,
// which is `foo`'s underyling prototype
// ONLY WORKS ON SOME ENGINES for now (including Firefox's SpiderMonkey)
console.log(foo.__proto__);
// Shows you the object referenced by foo.prototype
console.log(foo.prototype);
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 从javascript函数返回一个对象
- 节点模块对象范围:在所有函数之间共享一个对象
- 如何将对象引用传递到 mootools 中另一个对象的构造函数中
- JavaScript:如何将“.bind()”“函数”到另一个对象
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 如何使用jQuery访问属于函数内部另一个函数的对象的属性
- 使用jQuery.ajax请求向PHP函数发送一个对象数组
- 如何将来自多个 JavaScript 类的函数组合到一个对象中
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- 函数中的JavaScript函数-返回一个对象
- JS 函数将对象作为输入,并返回一个对象,该对象对作为参数传递的对象执行操作
- 是JavaScript中的函数一个对象
- 如何创建一个对象,其中对象本身是一个函数
- 我对javascript中的一个自定义函数感到困惑,该函数将对象作为参数获取
- javascript:我需要从函数参数中获取一个对象键
- Javascript:如何附加到构造函数的原型,如果该构造函数已经在另一个对象的原型上定义
- 给定一个对象数组,创建一个函数,该函数返回一个 Object,该 Object 具有按类型分组的路径数组
- 如何使对象的函数或属性成为指向另一个对象函数的指针