草庐IT

self-assignment

全部标签

javascript - 如何在 es6 类中执行 `var self = this`?

我在nodejs中运行下面的代码this.x='globalx';classPoint{constructor(x){this.x=x;}toString(){returnthis.x;}}varobj=newPoint(1);obj.toString();//1asexpectedvara=obj.toString;//HereIcandosomethinglikevara=obj.toString.bind(obj);togetridofthesituation.ButIamcurioustoknowhowcanwewrite`varself=this`;a();//TypeErr

javascript - Object.assign() 创建的是深拷贝还是浅拷贝?

我刚刚遇到这个概念varcopy=Object.assign({},originalObject);将原始对象的副本创建到“copy”对象中。但是,我的问题是,这种克隆对象的方式创建的是深拷贝还是浅拷贝?PS:令人困惑的是,如果它创建一个深拷贝,那么这将是克隆对象的最简单方法。 最佳答案 忘记深拷贝吧,即使是浅拷贝也不安全,如果你复制的对象有一个enumerable属性设置为false的属性。MDN:TheObject.assign()methodonlycopiesenumerableandownpropertiesfromaso

javascript - self 和 window 有什么区别?

我有一个JavaScript用于检测页面是否在框架中。我使用了top.frames[]等,一切正常。在这个脚本中,我注意到我可以互换使用“window”或“self”,一切仍然有效。"window"在HTML页面中使用时是否与"self"相同? 最佳答案 self是一个只读属性,它比直接使用window更灵活,有时更适合直接使用。这是因为self的引用会根据操作上下文而变化(与window.self不同,后者仅在window存在时才存在)。正如其他人所提到的,它也非常适合比较。例如,如果您在WebWorker(位于其自己的后台线程中

javascript - 错误 : [$compile:nonassign] Expression 'undefined' used with directive 'myFacebook' is non-assignable

我正在用angularjs编写一个指令并得到上面提到的错误。我正在使用一本书中的代码。.directive('myFacebook',[function(){return{link:function(scope,element,attributes){(function(d){varjs,id='facebook-jssdk',ref=d.getElementsByTagName('script')[0];if(d.getElementById(id)){return;}js=d.createElement('script');js.id=id;js.async=true;js.src

javascript - 未捕获的类型错误 : Cannot assign to read only property

我正在尝试NicholasZakas所著的“面向Web开发人员的专业JavaScript”一书中的这个非常简单的示例,但我不知道我在这里做错了什么。一定是我错过的非常简单的东西,但我被卡住了。代码如下:'usestrict';varbook={};Object.defineProperties(book,{originYear:{value:2004,writable:false},_year:{value:2004},edition:{value:1},year:{get:function(){returnthis._year;},set:function(newValue){if(

javascript - Object.assign 与 $.extend

鉴于我使用的是不可变对象(immutable对象),我想克隆或复制一个对象以进行更改。现在我一直在使用javascript的原生Object.assign但偶然发现了JQuery$.extend。我想知道执行此操作的更好方法是什么,两者之间到底有什么区别?查看文档,我似乎无法真正找到关于为什么选择其中任何一个的区别。 最佳答案 两个关键区别是deep合并的可选bool值,它在jQuery$.extend方法上递归(其中false不是支持?!)...letobject1={id:1,name:{forename:'John',surn

javascript - window.open 目标 _self v window.location.href?

我需要使用JavaScript重定向用户。哪种方法是首选?window.open("webpage.htm","_self");或window.location.href="webpage.htm"; 最佳答案 绝对首选第二种方法,因为您没有另一个函数调用的开销:window.location.href="webpage.htm"; 关于javascript-window.open目标_selfvwindow.location.href?,我们在StackOverflow上找到一个类似的

javascript - RxJs 管道和可出租运算符 `map` : 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'

我有一个非常基本的例子,它使用可出租运算符map与pipe来自rxjs@5.5:import{map}from'rxjs/operator/map';leto=of(1,2,3,4).pipe(map((v)=>v*2));但它会产生错误Error:(34,5)TS2684:The'this'contextoftype'void'isnotassignabletomethod's'this'oftype'Observable'.这里有什么问题? 最佳答案 应从rxjs/operators导入可出租实例运算符:import{map}f

javascript - 是 var self = this;坏模式?

我发现自己需要:varself=this;我的javascript“类”中有很多。虽然这很普遍,但感觉有点不对。我希望在这个问题中找到一个更好的方法来处理这个问题,或者让我相信这是完全没问题的。这是保持正确绑定(bind)的标准方法吗?我是否应该在任何地方都使用“self”来标准化,除非我明确需要“this”。编辑:我很清楚我为什么需要这个,我只是想知道它是否被认为有点邪恶以及为什么。我知道还有“应用”内置javascript函数可以在调用方法时显式定义范围。好点了吗? 最佳答案 正如其他人所说:这个“额外变量”(在某种程度上)是了

javascript - window.location.assign() 和 window.location.replace() 的区别

window.location.assign()和window.location.replace()都重定向到新页面时有什么区别? 最佳答案 使用window.location.assign("url")只会导致加载新文档。使用window.location.replace("url")将替换当前文档并用该URL替换当前历史记录,这样您就无法返回到上一个加载的文档。引用:http://www.exforsys.com/tutorials/javascript/javascript-location-object.html