Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
отказаться от ослов ниже девятой версиидоступ к проперти в 10-20 раз медленее чем доступ к переменной.
MyClass = function (param) {
var property = param;
accessors.define(this, 'property', {
set: function (value) {
property = value;
},
get: function () {
return property;
}
});
};
this.accessors = {
lookup: lookup,
define: define
};то, имхо, красивее эту самую фукнцию вызывать через .call(window, Object), вместо просто (Object). Нагляднее как-то, что-ли.
window ;)Эээ, получается ты каждому новому экземпляру отдельно прописываешь ассессоры?
MyClass = function(){};
MyClass.prototype = {
get property ( ) {},
set property (v) {}
};
А на сервере — нету никакого window ;)
var MyClass = new Class({
Properties: {
foo: {
set: function (foo) {
this._foo = foo;
},
get: function () {
return this._foo;
}
}
}
});
var instance = new MyClass();
instance.foo(123);
alert(instance.foo());
Class.Mutators.Properties = function (properties) {
for (var name in properties) (function (name, prop) {
this.prototype[name] = function (value) {
if (arguments.length) {
// setter
if (!prop.set) throw new Error('No setter for ' + name);
prop.set.call(this, value);
return this;
} else {
// getter
if (!prop.get) throw new Error('No getter for ' + name);
return prop.get.call(this);
}
};
}.call(this, name, properties[name]));
};
Кроссбраузерные аксессоры в JavaScript