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)}};