Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一个原型访问函数属性_Javascript_Prototype - Fatal编程技术网

Javascript 从一个原型访问函数属性

Javascript 从一个原型访问函数属性,javascript,prototype,Javascript,Prototype,我确信我误解了如何从它的一个原型中访问函数属性。 由于这个问题,我可能得到-10,但我确实需要帮助理解为什么它总是返回未定义的值 函数查找(){ 如果(!(此查找实例)){ 返回新的查找(); } this.url=“/administration/lookups”; }; lookup.prototype.partial_create=()=>{ 警报(this.url); }; var lookup1=函数(){ this.url=“/administration/lookups”; }

我确信我误解了如何从它的一个原型中访问函数属性。 由于这个问题,我可能得到-10,但我确实需要帮助理解为什么它总是返回未定义的值

函数查找(){
如果(!(此查找实例)){
返回新的查找();
}
this.url=“/administration/lookups”;
};
lookup.prototype.partial_create=()=>{
警报(this.url);
};
var lookup1=函数(){
this.url=“/administration/lookups”;
}
lookup1.prototype.makealert=()=>{
警报(this.url);
}
$(()=>{
新建查找()。部分创建();
新建lookup1().makealert();
})

这是因为您将这两个原型方法都定义为-,这两个方法的行为与其他函数有关。(这确实是首先使用箭头函数的要点,但它们在这里放错了位置。)特别是(正如您在上面的链接中所看到的),箭头函数使用其封闭范围的
This
,这里是全局范围。因此
this
不是指
lookup
的实例,而是指全局对象-因此
this.url
只是全局变量
url
,它(因为您没有定义这样的变量)是
未定义的

要显示差异,请运行下面的代码段-它与您的代码段相同,箭头函数替换为“常规”
函数
声明。这现在可以按照您的预期工作:

函数查找(){
如果(!(此查找实例)){
返回新的查找();
}
this.url=“/administration/lookups”;
};
lookup.prototype.partial_create=函数(){
警报(this.url);
};
var lookup1=函数(){
this.url=“/administration/lookups”;
}
lookup1.prototype.makealert=函数(){
警报(this.url);
}
$(()=>{
新建查找()。部分创建();
新建lookup1().makealert();
})

这是因为您将这两个原型方法都定义为-,这两个方法的行为与其他函数有关。(这确实是首先使用箭头函数的要点,但它们在这里放错了位置。)特别是(正如您在上面的链接中所看到的),箭头函数使用其封闭范围的
This
,这里是全局范围。因此
this
不是指
lookup
的实例,而是指全局对象-因此
this.url
只是全局变量
url
,它(因为您没有定义这样的变量)是
未定义的

要显示差异,请运行下面的代码段-它与您的代码段相同,箭头函数替换为“常规”
函数
声明。这现在可以按照您的预期工作:

函数查找(){
如果(!(此查找实例)){
返回新的查找();
}
this.url=“/administration/lookups”;
};
lookup.prototype.partial_create=函数(){
警报(this.url);
};
var lookup1=函数(){
this.url=“/administration/lookups”;
}
lookup1.prototype.makealert=函数(){
警报(this.url);
}
$(()=>{
新建查找()。部分创建();
新建lookup1().makealert();
})

=>
函数的调用不会为此
建立值。您的函数应该是传统函数(用
函数声明)
。@Pointy谢谢您,先生,您帮助了我很多对
=>
函数的调用不会为
建立值。你的函数应该是传统函数(用
函数声明)
。@Pointy谢谢你,先生,你帮了我很多忙,谢谢你的解释。我不知道写函数古典版和现代版之间有功能上的区别。谢谢你的解释。我不知道写函数古典版和现代版之间有功能上的区别