Tag: oop

jquery类inheritance

var A=function(){ }; $.extend(A.prototype, { init:function(){ alert(‘A init’); } }); var B=function(){ }; $.extend(B.prototype,A.prototype,{ init:function(){ alert(‘B init’); } }); var p=new A(); p.init(); var x=new B(); x.init(); 上面是在jQuery中创建类和inheritance的最佳方法吗? 在B的init中如何调用父的init(类似于OO语言中的super.init())?

覆盖“this”变量问题或如何调用成员函数?

我有这个类,我使用jQuery和Prototype的组合: var MyClass = Class.create({ initElements: function(sumEl) { this.sumEl = sumEl; sumEl.keyup(this.updateSumHandler); }, updateSumHandler: function(event) { // Throws error here: “this.updateSum is not a function” this.updateSum(); }, updateSum: function() { // does something here } }); 我怎么能调用this.updateSum()呢?

Javascript从事件处理程序获取对父对象/类的引用

我有一个类(或者包含函数的对象;我听说没有Javascript类这样的东西)叫做Foo,它有一个附加到click事件的事件处理程序。 调用事件处理程序时,我想修改我的类Foo的属性。 通常,我会使用this关键字,但在事件处理程序中, this引用设置为对html元素的引用。 这是我的代码: function Foo() { this.num=0; $(‘element’).click(this.eventHandler);// jQuery to attach an onclick event to my element. this.eventHandler=function() { this.num++;// This doesn’t work. // Normally, “this” would refer to my instance of Foo, // but as an event handler, “this” refers to the html element. } } 所以我的问题是:如何将我的Foo实例引用到我的事件处理程序中,以便我可以修改其属性(如num )?

JavaScript函数执行可以被中断吗?

有一个对象来存储数据。 var store = { elements: [], eventsEnabled: true, addElement: function(element) { this.elements.push(element); if (this.eventsEnabled) { // Code that triggers event, calls handlers… whatever } } }; 存储数据的行为来自两个事件(两种生产者)。 第一个“生产者”不会触发任何事件: setInterval(function() { store.eventsEnabled = false; store.addElement(‘hello’); store.eventsEnabled = true; }, 12000); 秒确实触发事件: setInterval(function() { store.addElement(‘bye’); }, 7000); 问题是,第二个生产者可以打破第一个生产者的执行流程吗? 我的意思是,如果生产者1禁用事件,并且在完成执行之前(因此在再次启用事件之前),生产者2开始执行并添加其元素,则不会触发任何事件。 那可能吗? 这会发生吗? 如果是这样,如何将此代码转换为线程安全的?

jQuery OOP基础知识

我想开始开发jQuery游戏,因此我需要学习jQuery OOP。 我有一些(足够)使用C ++ OOP(开发一些游戏)的经验。 我知道我可以用jQuery“对象”替换C ++“类”,但我不知道它究竟是如何工作的。 jQuery还有更高级的“选项”,比如C ++吗? (抽象类/对象,inheirtance等…) 你能解释一下吗? (或者给我一些好的javascript OOP教程的链接)。

处理jQuery事件时,’this’关键字在JavaScript类中重写

我用JavaScript在单个方法中定义了一个类: function MyClass(text) { this.text = text; } MyClass.prototype.showText = function() { alert(this.text); } 然后,我使用jQuery定义了一个充当click事件处理程序的方法: function MyClass(text) { this.text = text; $(‘#myButton’).click(this.button_click); } MyClass.prototype.showText = function() { alert(this.text); }; MyClass.prototype.button_click = function() { this.showText(); }; 当我点击按钮时,它无法说: 对象#没有方法’showText’ 似乎this在jQuery click事件处理程序中引用了HTML元素本身,并且它没有引用MyClass对象的实例。 我该如何解决这种情况? jsFiddle可用: http : //jsfiddle.net/wLH8J/

无法使用`this`访问该对象。 `this`指向`window`对象

我有这个Javascript构造函数 – function TestEngine() { this.id=’Foo’; } TestEngine.prototype.fooBar = function() { this.id=’bar’; return true; } TestEngine.prototype.start = function() { this.fooBar(); } TestEngine.prototype.startMethod = function() { inter = setInterval(this.start, 200); } var test = new TestEngine(); test.startMethod(); 给我这个错误 – Uncaught TypeError: Object [object global] has no method ‘fooBar’ 我试过console.log并发现当我从setInterval调用this.start时, this指向window对象。 为什么会这样?