原型定义的变量的问题

发布于 2022-09-04 07:25:09 字数 1157 浏览 32 评论 0

想问大家一个问题,为什么看到别人写的类,属性都挂在this上?不可以放在方法里吗?比如

function GetMusic($content) {
  this.content = $content;
  this.title = this.content.find(".title");
}
GetMusic.prototype.changTitle = function() {
  this.title.toggleClass("on");
  }
}

为什么不这样写

function GetMusic($content) {
  this.content = $content;
}
GetMusic.prototype.changTitle = function() {
  var title = this.content.find(".title");
  title.toggleClass("on");
  }
}

就是为什么有时候这个变量只用一次也挂在实例上,就是用this挂起来。那么其实:
第一种:

 function GetMusic($content) {
      this.content = $content;
      this.title = this.content.find(".title");
    }

第二种

function GetMusic($content) {
      this.content = $content; 
    }
    GetMusic.prototype.changTitle = function() {
     this.title = this.content.find(".title");
      }
    }

第三种

 function GetMusic($content) {
      this.content = $content; 
    }
    GetMusic.prototype.changTitle = function() {
     var title = this.content.find(".title");
      }
    }

上面的三个title变量有什么不一样?对性能什么的有什么印象?一般什么情况下用哪种?

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

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

发布评论

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

评论(1

人心善变 2022-09-11 07:25:09

LZ你要干嘛?


对于以下:

第二种

第三种

问题:
为什么我每次调用changTitle的时候你都给我执行this.content.find函数、而且每次结果都是title,不累吗?


对于以下:

GetMusic.prototype.changTitle = function() {
    var title = this.content.find(".title");
 }

问题:
如果我现在有个其他函数,叫什么changTitleColor:

GetMusic.prototype.changTitleColor= function() {
 var title = this.content.find(".title");
 //title.style.color = 'xxxx';
}

//如果保存了this.title的属性的话就可以这样
GetMusic.prototype.changTitleColor= function() {
 //this.title.style.color = 'xxxx';
}

上面又重复了this.content.find(".title")这个方法,不累吗?


其实,这里要考虑的不是性能,而是封装,也即是到底这个this.title是不是和GetMusic强相关;如果是的话,那就把title给容纳进来、作为GetMusic内部一部分;如果this.titleGetMusic相关性很小,那也就没必要保存this.title这个属性;
也就是分清楚哪里是内部、哪里是外部。

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