我正在使用 John Resig 的简单 OOP Class
,它适用于“使用严格”并取自SO post。
在所有示例中,我都看到了Class.extend
这样的用法:
var MyObj = Class.extend({
init:function(){},
prop: "Property"
});
但是我发现以这种方式使用它对我来说有一个很大的缺点——我不能有“私有”变量,所以我不能存储对this
like的引用var $this = this;
。我找到了适合我的案例的解决方案,现在我使用Class.extend
以下方式:
var MyObj = Class.extend(new function(){
var $this = this;
this.init = function(){};
this.prop = "Property";
});
在我的情况下一切正常,但我想知道从长远来看是否有一些事情会导致我出现问题?
这样我的应用程序会在浏览器中消耗更多内存吗?
我有什么替代方法来实现我的需求?
注意:我需要存储 $this,因为我大量使用事件和回调,所以我想引用“原始”this
以便访问对象上的所有方法和属性。
编辑:根据要求,这是我的代码示例:
(function () {
"use strict";
window.QuickPlay = Class.extend(new function () {
var $this = this;
this.init = function (initData) {
$this.elementsToHide.push(initData.el);
$(function () {
playProcessStart();
Sys.Application.add_load(function () {
$find("ctl00_ContentPlaceHolderMain_ctrlPlayPopup1").add_closed(function () { $this.setElementsVisibility(""); });
});
$this.setElementsVisibility("hidden");
});
};
this.elementsToHide = [];
this.setElementsVisibility = function (visibility) {
$.each($this.elementsToHide, function (i) {
$("#" + this).css("visibility", visibility);
});
};
});
} ());