[英]Functional programming issue is JS
我在玩bind
call
並apply
。 我試圖通過將從一個函數返回的任何內容傳遞給該對象的方法來更新對象的屬性。
並且此更新附加到window
調整大小事件。
var el = document.getElementById('someElement'); var resolveLeft = function(element) { return element.offsetLeft; }; var someObject = { setDefaultLeft: function(value) { this.defaultLeft = value; console.log(this.defaultLeft); } }; // this works window.addEventListener('resize', function() { someObject.setDefaultLeft(resolveLeft(el)); }); // this one doesn't window.addEventListener('resize', someObject.setDefaultLeft.bind(someObject, resolveLeft(el)));
#someElement { position: absolute; left: 10%; }
<div id="someElement"></div>
我有2個事件綁定。 第一個每次更改窗口大小時都會注銷更新的值,而第二個僅記錄返回的初始值。
我意識到在第二種情況下,該值已經從resolveLeft
返回,並且不會revisit
(可以這么說) resolveLeft
函數。 它只是通過了從一開始就返回的所有內容。
有沒有解決方法?
我覺得使用curry可以解決這個問題? 但不確定在這種情況下如何實施。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.