Javascript 从一个原型访问函数属性
我确信我误解了如何从它的一个原型中访问函数属性。 由于这个问题,我可能得到-10,但我确实需要帮助理解为什么它总是返回未定义的值Javascript 从一个原型访问函数属性,javascript,prototype,Javascript,Prototype,我确信我误解了如何从它的一个原型中访问函数属性。 由于这个问题,我可能得到-10,但我确实需要帮助理解为什么它总是返回未定义的值 函数查找(){ 如果(!(此查找实例)){ 返回新的查找(); } this.url=“/administration/lookups”; }; lookup.prototype.partial_create=()=>{ 警报(this.url); }; var lookup1=函数(){ this.url=“/administration/lookups”; }
函数查找(){
如果(!(此查找实例)){
返回新的查找();
}
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谢谢你,先生,你帮了我很多忙,谢谢你的解释。我不知道写函数古典版和现代版之间有功能上的区别。谢谢你的解释。我不知道写函数古典版和现代版之间有功能上的区别