问题标签 [extending-classes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
496 浏览

php - 在插件中扩展 WooCommerce COD 支付网关

我想了解在 Wordpress 中加载各种类的顺序。Wordpress 中有许多插件可用,那么谁会比另一个更早加载。

考虑我想开发一个插件,该插件将使用一些现有的 Woocommerce 类。基本上我的自定义插件将扩展一些 Woocommerce 类(例如:WC_Gateway_COD)

如何确保现有类 'WC_Gateway_COD' 在执行以下语句之前已经定义和加载?

0 投票
2 回答
72 浏览

javascript - 在类语法和 Object.create 之前,“类”是如何扩展的?

我一直无法找到答案。JavaScript 中的对象有一个继承链;任何函数Function => Object的链是 ,is 的实例的链,以及TypeErrorisTypeError => Error => Object的链TypeError,奇怪的是,Function => Function => Object

除了直接构造函数之外,我还查找了如何使构造对象从另一个函数继承属性,期望得到的继承链是这样object => constructor => second function的,并且这是一个构造函数扩展另一个构造函数的方式。我找到的解决方案是<second function>.<call or apply>(this[, optional arguments...])在构造函数的主体内调用,但object instanceof <second function>最终返回false.

进一步的研究揭示了大多数使用类语法的答案 or Object.create,但这些都是新的,并且自 JavaScript 语言创建以来,一个“类”扩展了另一个在 JavaScript 中的“类”就已经存在,因此还有其他一些方法可以做到这一点。这些信息应该与 JavaScript 构造函数的基本解释一起提到,但事实并非如此。扩展“类”(不是实际的类语法)导致更深的继承链的主要方法是什么?

示例结果:

错误的解决方案:

0 投票
0 回答
33 浏览

javascript - 扩展 Phaser3 容器类抛出 TypeError

我正在尝试扩展 phaser3 容器类以获取带有一些默认项目的可重用框。我读了这个。我尝试了不同的方法来传递场景对象,但都没有奏效。我也不确定这是否真的是问题所在。非常感谢任何帮助或提示。

这不会显示“top_bar”图像,但会抛出

0 投票
0 回答
67 浏览

javascript - Puppeteer - 如何扩展 ElementHandle 以添加更多方法?

您将如何扩展ElementHandle该类以添加更多有用的方法,例如

句柄.isVisible?

我可以做 isVisible(handle) 但我更喜欢相反的方式。

我试图require( "puppeteer/lib/cjs/puppeteer/common/JSHandle" ).ElementHandle通过原型从那里做并扩展它

但是当我将要求添加到我的代码中时,它破坏了我的代码的其他部分。有没有更好的方法?

谢谢!

0 投票
0 回答
29 浏览

django-models - django 'User' 对象在使用 post_save 时没有属性 'profile'

登录管理面板时显示此错误“'用户'对象没有属性'配置文件'”

我还希望每当学生注册时,都会创建一个由其中的时间字段命名的批次,并且在每个第 41 个学生上,创建另一个具有下一次选择的批次

0 投票
0 回答
10 浏览

php - 扩展 h5p 渲染器

我一直在尝试扩展 h5p 渲染器的类,但无济于事。我想系统中可能有大量的“渲染器”类,这就是我收到错误的原因。

我做什么:需要主类文件:

该类如下所示:

然后在我的主题中,我尝试扩展这个类:

但这会产生错误Exception - Class 'renderer' not found

我怎样才能让它工作?

0 投票
0 回答
6 浏览

ruby - 如何通过扩展类来干掉 SemanticLogger::Loggable 和 SemanticLogger::Loggable::ClassMethods?

概括

我正在尝试使用SemanticLogger 4.10.0 作为 Ruby 3.1.1 应用程序中动态跟踪解决方案的一部分。但是,我似乎误解了有关如何或在何处访问SemanticLogger::Loggable应该在类上创建的记录器实例的一些东西,并且在从扩展类内部调用#logger_measure_method时出现 NameError 异常(如下所述),因为我似乎无法正确实现类扩展。

说明问题的代码

带有 CustomLogger 的模块

由 CustomLogger 扩展的模块

执行守则

代码的问题和问题

我的问题是:

  1. 潜在的(可能是 X/Y)问题是我想干掉在我跟踪的每个类中包含SemanticLogger::LoggableSemanticLogger::Loggable::ClassMethods的代码,并自动测量扩展类的方法开发中。

  2. 当我尝试使用旨在引入 SemanticLogger::Loggable 的模块来扩展类时,我似乎并不总是将记录器用作整个类的访问器。

  3. 我还担心将模块包含在多个类中会导致重复的附加程序被添加到#appenders数组中,无论它实际存储在哪里

  4. 最重要的是,当我尝试通过扩展类来自动添加日志记录和方法测量时,我会收到如下错误:

    ~/.gem/ruby/3.1.1/gems/semantic_logger-4.10.0/lib/semantic_logger/loggable.rb:96:in `alpha': #SomeGem::Foo:0x00000001138f6a38 的未定义局部变量或方法`logger' (NameError) 来自 foo.rb:51:in `<main>'

我是否遗漏了一些关于如何使用 SemanticLogger 扩展类的明显内容?如果有更好的方法来完成我想做的事情,那就太好了!如果我做错了什么,理解那也很棒。如果这是一个错误,或者我使用错误的功能,这也是有用的信息。