javascript函数也是一种对象吗?

javascript函数也是一种对象吗?,javascript,Javascript,我们可以看到 function generate() { this.a = 'hello'; } obj = new generate(); 所以,我的问题是,如何理解“this.”现象?是的,函数也是Javascript中的对象。更多信息请访问JS。由于函数是完全动态的,因此函数不是纯对象,而是可以以与对象相同的方式动态创建、读取、写入、删除和调用的 证明:typeof(function(){})返回“function” 在函数中使用“this”通常用于描述伪构造函数: 由于javas

我们可以看到

function generate() {

this.a = 'hello';

}

obj = new generate();

所以,我的问题是,如何理解“this.”现象?

是的,函数也是Javascript中的对象。更多信息请访问

JS。由于函数是完全动态的,因此函数不是纯对象,而是可以以与对象相同的方式动态创建、读取、写入、删除和调用的

证明:
typeof(function(){})
返回
“function”

在函数中使用
“this”
通常用于描述伪构造函数:

由于javascript中没有类(js完全是声明性的),因此一种类似的方法是实际编写会影响self(this)实例的函数。在您的例子中,通过“new”操作符调用“generate”函数实际上会创建一个空对象,然后抛出“generate”函数,就好像它已经进入对象本身一样。然后,您就有了一个方法来构建一个包含公共值“a”和“hello”的对象

[编辑] 好的,澄清这些伪构造函数是如何工作的: 首先,为什么不是构造函数呢?这仅仅是因为我们描述的是当前对象,而不是从类创建对象。(记住javascript中没有类)

然后从外面

var o = new pseudoClass();
alert(o.a); // Alerts "hello", remember "a" is public and then accessible from the outside
alert(o.b); // Will not work, b is private…
alert(o.c); // Will not work, c is global and therefore not related to o.
alert(c);   // Alerts "ciao", c being global, once defined it is available everywhere.
明确地说,“o”看起来像:

{"a":"hello"}

请注意,您可能已将函数影响为“a”(公共)和“b”(私有),就像影响它们的“字符串”一样,即
this.a=function(){/*dosomething*/}
var b=function(){/*dosomething*/}
。(来自外部的调用现在是
o.a();

是的,函数是对象

但是,在您的示例代码中还有更多内容。如果使用
new
关键字调用函数,JavaScript将为您创建一个新对象,然后将该函数用作构造函数:在函数
中,此
引用新创建的对象,并返回新对象-但此新对象不是函数本身:过于简化,如果函数为
generate()
,则新对象基于
generate.prototype
,默认情况下该对象为空对象


进一步阅读:

功能的可能重复是对象。尝试
function test(){}
然后
test.prop=“1”好,这是一个第一类对象,但它们本身并不是纯对象。在这个问题上,我认为让人困惑的是“this”操作符在“new”操作符之后的用法。在这种情况下,函数对新创建的对象进行操作,而不是对函数本身进行操作。什么是“纯对象”?我不理解您试图进行的区分。
typeof({})
返回
“object”
。但是,
{}
无法执行。尽管内部有“this”,但是否可以直接调用generate()?效果如何?你能更具体地解释一下new generate()的过程吗?你读了我链接的页面了吗?或者这里有另一篇关于它的文章(带有图表):对不起,我现在无法打开它。谢谢~我想我已经找到答案了。顺便问一下,你有学习Javascript的好材料吗?
{"a":"hello"}