我找到了这个示例代码:functionpersonFullName(){returnthis.first+''+this.last;}functionPerson(first,last){this.first=first;this.last=last;this.fullName=personFullName;}vardude=newPerson("Michael","Jackson");alert(dude.fullName());这会提醒“MichaelJackson”。我将其更改为从构造函数调用personFullName而不是分配函数对象:functionpersonFullNa
在我的Reactnative代码中,我在多个模块的多个位置同时使用了bind(this)和varself=this;。两者都解决了在正确位置解析this关键字的问题。这是我的代码(执行相同功能的2个代码)-使用bind(this)retval.then(function(argument){console.log("argument"+JSON.stringify(argument));this.stateSetting(argument);}.bind(this));使用varself=thisvarself=this;retval.then(function(argument){c
我有一个svg组,我在其上调用拖动函数。varcontainer=d3.select("#id");container.call(dragcontainer);vardragcontainer=d3.drag().on("start",function(){}).on("drag",function(d,i){//(d3.select(this)).select("rect");}).on("end",function(){});显然,d3.select(this)不返回容器,但是它们相似(通过属性检查),但不完全相同。为什么会这样?如何在被调用函数中访问container?
假设我有一个这样的函数:varf1=function(){returnthis;};console.log(f1.bind('abc')()==='abc');据我所知,f1.bind('abc')应该创建一个返回'abc'的新函数,所以我猜它的输出应该与console.log('abc'==='abc')这是真的,但现在输出是假的,我的猜测有什么问题吗? 最佳答案 在非严格模式下,原始值被包裹在对象中。所以,'abc'变成了newObject('abc')。在严格模式下,这不会发生。'usestrict';varf1=functi
我最近看到这种类型的react模式,其中使用this.state在渲染中设置状态:classShowMeextendsReact.Component{constructor(props){super(props);this.state={showButton:false,};}render(){if(this.props.show){this.state.showButton=true;//settingstateinrender!!}return(Showorhidebutton{this.state.showButton&&})}}这似乎是一种反模式。这会导致错误吗?不过它似乎工作
我写了下面的代码。它没有给我答案,而是输出NaN。我希望代码返回John和Mark的权重。请解释。'usescript';//DeclaringvariablesvarinfoJohn;varinfoMark;varbmiCalculator;varhigherBmi;bmiCalculator=function(height,mass){varcalculatedBmi;calculatedBmi=mass/(height*height);returncalculatedBmi;};infoJohn={name:'John',mass:85,height:110,bmi:bmiCal
在尝试调试正在提交的内容时,我写了这个。是否可以提醒什么是正在提交?这里“this”指的是什么?我在警告框中收到对象,无法从中做出任何决定。:-) 最佳答案 在您的示例中,this是全局window对象。自己试试:结果为"function"(即全局函数)。或者尝试:结果为undefined(即它不指向表单元素)*。属性中"this"的值只会是以下两种情况之一:全局窗口对象元素本身唯一一次this指向元素本身是在intrinsiceventattribute中使用它时(以“on”为前缀的那些,例如“onclick”、“onload”等
this.remove()不是函数。怎么会?varvehicle=function(){return{init:function(){jQuery('.vehicle-year-profile.options.delete').bind('click',function(e){e.preventDefault();this.remove();});},remove:function(){alert('test');}}}();jQuery().ready(vehicle.init);抱歉造成混淆。我正在尝试调用我自己的“删除”功能。这只是一个在我的页面上管理车辆的类。这是它的开始,它将
我有以下JS:functionTrackTime(){this.CountBack=function(secs){setTimeout(function(){this.CountBack(secs)},SetTimeOutPeriod);}}我已经用闭包(见上文)和其他十几种方法尝试过这个。我似乎无法在任何浏览器中使用它。setTimeout函数在未在“类”函数中调用时工作正常。有人可以帮我吗? 最佳答案 发生这种情况是因为执行函数时“this”的范围发生了变化。试试这个技巧..functionTrackTime(){this.Co
现在这根本没有任何实际意义,但我对我偶然发现的这个小怪癖很好奇。基本上,在Chrome的开发者控制台中,这toString()返回[objectObject],而这个this.toString()返回[objectDOMWindow]。据我所知,这只发生在控制台,可以看出onthisjsFiddle.有人在##javascript上找到了thislink解释函数的来源。但是,它没有解释在控制台内部或外部使用时行为中存在的差异。那么为什么toString()和this.toString()在Chrome的控制台中产生不同的结果? 最佳答案