javascript - 如何创建构造函数?

标签 javascript jquery

我正在尝试创建一个滚动构造函数,因此我只想创建一个带有属性的“var”,而不是为每个页面区域提供 X 数量的每个函数来滚动(如果属性是正确使用的术语,请纠正我) 。

目前这就是我要做的事情。我知道我需要在构造函数中使用 jQuery 函数做一些事情,但不确定如何格式化它。

function Scroll(button, scrollTop) {
    this.button = button;
    this.scrollTop = scrollTop;

    $(this.button).click(function () {
        $('html').animate({
            scrollTop: $(this.scrollTop).offset().top
        }, 'slow');
    });

}

var top = new Scroll('#top', '.top-page');
var bottom = new Scroll('#bottom', '.bottom-page');
console.log(top);
Scroll(top);

最佳答案

你得到了一个有效的答案,这才是真正重要的。但如果您仍然对构造函数范例感兴趣,这里有一种使用 class 语法的方法

class Scroll {
  constructor(button, scrollTop) {
    this.button = button;
    this.scrollTop = scrollTop;
  }

  static scroll(scroll) {
    $(scroll.button).click(function () {
      $('html').animate({scrollTop: $(scroll.scrollTop).offset().top}, 'slow');
    })
  }
}

const top = new Scroll('#top', '.top-page');
const bottom = new Scroll('#about', '.about-page');
Scroll.scroll(top);
Scroll.scroll(bottom);

我不认为这比你所做的更好,只是想我会回答原来的问题。话虽这么说,由于您只是遍历并附加一堆监听器,因此您可以将所有按钮-scrollTop 对放入一个数组中,然后循环遍历它们。

const scrollArr = [['#top', '.top-page'],['#about', '.about-page']];
for (let a of scrollArr) {
  $(a[0]).click(function() {
    $('html').animate({scrollTop: $(a[1]).offset().top}, 'slow');
  })
}

那么您就没有带有 new 关键字的附加行。

关于javascript - 如何创建构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54050344/

相关文章:

javascript - 如何将 exec 输出显示到文本区域

javascript - 切换显示时的过渡效果 :none - display:block

jquery - 无法使我的图像居中

javascript - Twitter-bootstrap javascript 组件不工作

javascript - 输入数据未定义

javascript - 如何刷新div而不刷新所有php数据

javascript - 在 Canvas 上逐步绘制线条动画

Javascript 在 Woocommerce 结帐事件上执行函数

javascript - 将 React-hot-loader 与 Babel 6 结合使用

jquery - $ ("div p") 等于 $ ("div*p") 吗?