Javascript 什么是构造函数的实例化?

Javascript 什么是构造函数的实例化?,javascript,Javascript,函数F(){ var color=“红色”; this.fun=函数f(){ 控制台。日志(颜色); }; }; var i=新的F(); i、 乐趣()Javascript具有构造函数,您可以执行以下操作: F类{ 构造函数(){this.color=“red”;} 乐趣{ console.log(this.color); } }; 然后你必须用new F()调用它 当不调用构造函数时可以使用new调用任何函数,其效果是使函数中的此函数应用于函数本身。您可以使用apply调用它,并将this

函数F(){
var color=“红色”;
this.fun=函数f(){
控制台。日志(颜色);
};
};
var i=新的F();

i、 乐趣()Javascript具有构造函数,您可以执行以下操作:

F类{
构造函数(){this.color=“red”;}
乐趣{
console.log(this.color);
}
};
然后你必须用
new F()调用它

当不调用
构造函数时
可以使用
new
调用任何函数,其效果是使函数中的
函数应用于函数本身。您可以使用
apply
调用它,并将
this
设置为您想要的任何值

由于这个原因,JS中的一个常见约定是用CapitalCase命名那些希望用
new
调用的函数,而用camelCase命名那些不需要的函数。因此,您可以随意调用
fooBar()
,但如果您有
newfoobar()
而没有
new
,则可能会出现错误

因此,函数f,在这个全新的对象中,如何在一个完全独立的函数f中看到颜色变量


它不知道,
f
f
内,并看到在该范围内声明的
var color
。函数继承它们在其中声明的任何内容的范围
f
可以看到
f
的其余部分,但是
f
无法看到
f
中的闭包,Javascript具有构造函数功能,您可以执行以下操作:

F类{
构造函数(){this.color=“red”;}
乐趣{
console.log(this.color);
}
};
然后你必须用
new F()调用它

当不调用
构造函数时
可以使用
new
调用任何函数,其效果是使函数中的
函数应用于函数本身。您可以使用
apply
调用它,并将
this
设置为您想要的任何值

由于这个原因,JS中的一个常见约定是用CapitalCase命名那些希望用
new
调用的函数,而用camelCase命名那些不需要的函数。因此,您可以随意调用
fooBar()
,但如果您有
newfoobar()
而没有
new
,则可能会出现错误

因此,函数f,在这个全新的对象中,如何在一个完全独立的函数f中看到颜色变量


它不知道,
f
f
内,并看到在该范围内声明的
var color
。函数继承它们在其中声明的任何内容的范围
f
可以看到
f
的其余部分,但是
f
无法看到
f
内部的闭包
使用
new f()
时还有一个步骤:

iv)它将对象的原型设置为类似
{constructor:F}
的对象

这就是为什么对象被记录为
F{fun:[函数F]}
,而不仅仅是
{fun:[函数F]}
。具有标准
对象
原型以外的原型的对象将以构造函数的名称作为前缀显示

就访问变量
color
而言,它与任何其他嵌套函数没有区别,是一个从包含环境捕获变量的闭包。它与编写这样的普通函数没有什么不同:

函数F(){
变量颜色='红色';
设fun=函数f(){
控制台。日志(颜色);
};
返回{
乐趣:乐趣
}
}
设i=F()

i、 fun()
使用
new F()
时还有一个步骤:

iv)它将对象的原型设置为类似
{constructor:F}
的对象

这就是为什么对象被记录为
F{fun:[函数F]}
,而不仅仅是
{fun:[函数F]}
。具有标准
对象
原型以外的原型的对象将以构造函数的名称作为前缀显示

就访问变量
color
而言,它与任何其他嵌套函数没有区别,是一个从包含环境捕获变量的闭包。它与编写这样的普通函数没有什么不同:

函数F(){
变量颜色='红色';
设fun=函数f(){
控制台。日志(颜色);
};
返回{
乐趣:乐趣
}
}
设i=F()

i、 fun()
您可以访问
color
(值:红色),因为您提到了闭包。 因为
color
变量在函数
f/fun
声明时可用。它将其值保存为闭包变量

如果您还需要颜色变量的单独副本。在此
上定义它,如下所示:

函数F(颜色){
这个颜色=颜色;
this.fun=函数f(){
console.log(this.color);
};
};
var i1=新的F(“绿色”);
var i2=新的F(“红色”);
i1.乐趣();//绿色

i2.乐趣();//红色
您可以访问
颜色
(值:红色),因为您提到了关闭。 因为
color
变量在函数
f/fun
声明时可用。它将其值保存为闭包变量

如果您还需要颜色变量的单独副本。在此
上定义它,如下所示:

函数F(颜色){
这个颜色=颜色;
this.fun=函数f(){
console.log(this.color);
};
};
var i1=新的F(“绿色”);
var i2=新的F(“红色”);
i1.乐趣();//绿色
i2.乐趣();//红色
当您调用
new F()
时,将执行以下步骤(从):

  • 创建一个空白的普通JavaScript对象
  • 将此对象链接(设置其构造函数)到另一个对象
  • 将步骤1中新创建的对象作为此上下文传递
  • 如果函数不存在,则返回此值
    var i = {fun: function f() {console.log(color)}};