【发布时间】:2015-07-02 13:10:00
【问题描述】:
在 Javascript 中,每个函数都是一个对象。
function a() {
this.x = function() { console.log("x"); }
}
这里的“a”是一个函数,它是一个对象。对吧?
var b = Object.create(a);
b.x(); //does not work!!
如果我们这样写,上面的代码就可以工作了 -
var b = Object.create(new a())
这是否意味着只有函数的实例才是对象?不是函数?
【问题讨论】:
-
一个函数是一个对象,但函数内部
this不是那个对象。它是调用者设置的上下文。 -
如果你检查 -
a变量没有x属性 :-) 所以继承b也没有它 -
Frédéric 的评论更进一步,不仅
this不是对a的引用,在不起作用的代码中,您从未真正调用过该函数,因此其中的代码还没有运行。 -
您似乎有点困惑Object.create 的作用。 this 不调用作为构造函数传递的函数,用于新对象,而只是创建新对象并设置原型。
标签: javascript function object