Просто пропустите часть Excel - пользовательские формы Excel - это всего лишь версия для более бедных людей, как более надежные формы доступа. Кроме того, Access VBA идентичен Excel VBA - вам просто нужно изучить объектную модель Access. С простым приложением вам в любом случае не нужно будет писать много VBA, потому что в Access вы можете легко соединить все вместе.
temp
является вызывающим, но у него нет свойства __ class __
. Вы определили это только для теста
.
В javascript нет классов. Вместо этого несколько объектов могут «владеть» одной и той же функцией. Например:
function myFun(){
alert(this.name);
}
function Obj1(){
this.name = "obj1";
}
Obj1.prototype.fun = myFun;
function Obj2(){
this.name = "obj2";
}
Obj2.prototype.fun = myFun;
var obj1 = new Obj1();
var obj2 = new Obj2();
obj1.fun();
obj2.fun();
Функции не являются "собственными" в JavaScript. Функции являются объектами первого класса в JavaScript, что означает, что они могут передаваться, как и любые другие переменные, и назначаться как свойства многих объектов.
this
внутри тела функции предоставит вам ссылку на объект, на котором функция был вызван, если был вызван как метод (например, myObj.myMethod ()
) или через методы прототипа функции call ()
или apply ()
(например, myFunc.call (myObj)
). Внутри функции, вызываемой отдельно (например, myFunc ()
), this
обычно будет глобальным объектом (то же самое, что window
в большинстве браузеров).
Ваш сценарий не совсем ясен, но вот несколько вариантов: -
function globalFunc()
{
alert(this.__class__);
//Note globalFunc now has access to much more.
}
function MyObject(){ }
MyObject.prototype.test=function(){
globalFunc.call(this);
}
MyObject.prototype.__class__=MyObject;
Чтобы добавить закрытие для обработки событий
MyObject.prototype.test = function(){
var self = this;
var elem = //get some element;
//Not cross-browser but for illustration
elem.addEventListener('click', fnEvent);
function fnEvent() { globalFunc.call(self); }
elem = null
}
вызывающий
нестандартный и очень хрупкий; лучше избегать. Намного лучше передать значение явно:
MyObject.prototype.test= function() {
element.addEventListener('click', function() {
globalFunc(MyObject);
});
};
или:
MyObject.prototype.test= function() {
var myclass= arguments.callee.__class__;
element.addEventListener('click', function() {
globalFunc(myclass);
});
};
I don't understand well what you are trying to do, but here's an idea that could inspire you something.
The "constructor" property helped me well when I was trying to use JS as a OO language.
o.constructor
will give you the myObject
function reference.
But in my opinion, you should give functional programming a try instead of OO to get the most from Javascript