Tag: 封装

Javascript对象属性不在范围内

我似乎对对象的属性范围有问题。 我想将每个Message对象的title和message属性输出到select元素,但它不工作 ! 我做错了什么 $(function(){ function Message(title, message) { this.title=title; this.message=message; this.getTitle = function(){ return this.title; }; this.getMessage = function(){ return this.message; }; } var messages = new Array( new Message(“First Title”, “This is the first message”), new Message(“Second Title”, “This is another message”) ); function updateSelect () { $(“#cannedMessages_button”).empty(); for (c in messages) { […]

Javascript static / singelton – 这与vs _this vs对象名称

这是关于性能和最佳实践的问题。 假设我有一个封装了大量辅助方法的js对象。 该对象被视为静态类,这意味着它永远不会被实例化,并且它的所有方法基本上都是辅助方法。 当使用事件和jQuery时,对象的this范围不断变化,因为它有相当多的方法,我想知道什么是最佳实践 – 在每个方法的开头将其保存到_this中,或者只使用对象名称MyObject 。 多年来,我一直在做两件事,当涉及到singelton /静态物体时,但我认为必须有一个最佳实践,而且是采用最佳方法的时候了。 我目前的研究表明,使用_this而不是直接调用MyObject所带来的好处主要是这两个: 如果对象的名称发生变化, _this将始终有效 可能更快(虽然没有看到性能测试结果),因为浏览器保持在相同的范围内,并且不需要每次都找出MyObject的范围。 使用MyObject优点: 少写代码。 垃圾收集管理? (分配的变量较少) 对于一些开发人员来说可能更具可读性(其中多个适用) 因为MyObject将始终有效,所以更容易重构代码 我想知道是否有一种全局保存_this (仅在对象的范围内)并避免在每个方法的开头分配它。 如果不是 – 我是否还有其他优缺点,或者直接调用对象名称被认为是不好的做法。 这是一个简化的参考对象(真实对象有更多的方法)。 var MyObject = { init: function() { this.registerEvents(); //other stuff }, registerEvents: function() { this.registerOnSomeEvent(); //registering more events.. //… }, registerOnSomeEvent: function() { var _this = this; jQuery(‘#someid’).click(function() { _this.doSomething();//option […]