看似以后会用到的变量 要提前声明到顶级的作用域吗?~

发布于 2022-09-05 08:59:49 字数 627 浏览 21 评论 0

var test = {
    init: function (id) {
        // this.id = id; // 这种方案
        
        method0(id);
        method1(id);
    },
    
    method0: function (userId) {
        console.log(userId);
        //console.log(this.id); // 这种方案

        method2(userId);
    },

    method1: function (userId) {
        userId = userId.toUpperCase();
    },
    
    method2: function (userId) {
        return userId.substring(3).split(',');
    }
};

如上栗子 id 很常用 各各方法几乎都会用到 虽然目前都可以通过传参的形式给各方法 但是如果方法多了呢?或者一个方法被调用的作用域里访问不到 id 那么这种时候 id 应该放到最顶层以供所有方法都可以访问吧 是写的时候就这么去写 还是说等遇到这情况了 再去改?~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

橙幽之幻 2022-09-12 08:59:49

我同意@Pandorym的意见。
并且本来你这种方式声明的方法里面的【this作用域】就是变来变去的,属于工具方法,需要其他参数,请自带或者在方法里面加多一个对应的参数。

如果需要this.id这种方案,请使用
function xxx(){

this.id = 'xxx'; 
this.add(){
  console.log('id',this.id');
}

}
的方式声明和使用。

她如夕阳 2022-09-12 08:59:49
If id pertain to test
    this.id = id
Else
    payload.id = id || method(id)

如果id不屬於test,當「一个方法被调用的作用域里访问不到 id 」時,也是應該將id作為參數傳入。

落叶缤纷 2022-09-12 08:59:49

我的做法是把一个模块要用到的变量放到模块的最上方;全局变量放在global.js中

魂牵梦绕锁你心扉 2022-09-12 08:59:49

如果非要用这种写法的话

  • 假如 test对象是一个对某功能抽象的对象,是可以的,属于单例模式写法的一种,只需init一次,其他地方都是使用这个对象
  • 如果是工具类对象,建议还是直接传入userid
最冷一天 2022-09-12 08:59:49

个人建议封装一层fn对id的调用,然后函数需要调用是执行封装id的方法即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文