原型取决于全局变量(如果该变量发生变化怎么办)

Prototype depending on global variable (what if that variable changes)

本文关键字:变化 怎么办 变量 取决于 全局变量 如果 原型      更新时间:2023-09-26

我正在构建一个JS原型函数,它使用的值之一基于名为"viewport"的全局对象。但是,如果此对象的值将更改;原型的值将不再准确。

确保值始终相等的最佳或最有效的方法是什么?

获取视口值:

  var viewport = {
     width: undefined
  }
  function initViewport($window){
     viewport.width = $window.width();
  }
  $(document).ready(function(){
     initViewport($(window));
  });
  $(window).resize(function(){
     initViewport($(window));
  });

创建原型:

  // Slider it's width is depending the viewport width
  function Slider(){
     this.width = viewport.width;
  }
  Slider.prototype.slide = function(){
     console.log(this.width);
  }
  var slider = new Slider();
  slider.slide();

提前感谢!

您可以像这样添加回调:

  var viewport = {
     width: undefined,
     onChange: []
  }
  function initViewport($window){
     viewport.width = $window.width();
     viewport.onChange.forEach(function(fn) {
         fn(viewport.width);
     });
  }

并在滑块中:

  function Slider(){
     this.width = viewport.width;
     viewport.onChange.push(function(newvalue) {
         this.width = newvalue;
     }.bind(this));
  }