javascript - 如何重用函数属性?
问题描述
我想做如下的事情:
function StatusBox() {
this.connectionStatus = $("#connectionStatus");
}
StatusBox.nosupport = function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + NO_SUPPORT + '</span>');
};
StatusBox.error = function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + ERROR + '</span>');
};
但我没被抓住TypeError: Cannot read property 'html' of undefined
如何在子函数中重用$("#connectionStatus")
?
解决方案
从我可以看到你所追求的设计模式是这样的:
function StatusBox() {
this.connectionStatus = $("#connectionStatus");
}
StatusBox.prototype.nosupport = function(type) {
this.connectionStatus.html('<span style="color: red;">' + NO_SUPPORT + '</span>');
};
StatusBox.prototype.error = function(type) {
this.connectionStatus.html('<span style="color: red;">' + ERROR + '</span>');
};
let statusBox = new StatusBox();
statusBox.nosupport();
statusBox.error();
但你也可以这样做:
function StatusBox() { }
StatusBox.getConnectionStatus = function() {
StatusBox.connectionStatus = $("#connectionStatus");
};
StatusBox.nosupport = function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + NO_SUPPORT + '</span>');
};
StatusBox.error = function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + ERROR + '</span>');
};
StatusBox.getConnectionStatus();
StatusBox.nosupport();
StatusBox.error();
这有点多余,因为一个简单的对象将完成相同的任务:
const StatusBox = {
getConnectionStatus: function() {
StatusBox.connectionStatus = $("#connectionStatus");
},
nosupport: function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + NO_SUPPORT + '</span>');
}
error: function(type) {
StatusBox.connectionStatus.html('<span style="color: red;">' + ERROR + '</span>');
}
};
StatusBox.getConnectionStatus();
StatusBox.nosupport();
StatusBox.error();
推荐阅读
- json - TSV 到 JSON 大文件 ~8.5 GB
- java - 在 Java 2D 中渲染文本轮廓
- spring - 如何在控制器内模拟rest api调用
- apache-flink - Flink:从 Kinesis 读取导致 ReadProvisionedThroughputExceeded
- discord.py - 如何使嵌入粗体中的几个单词和其余正常文本?另外,如何在机器人消息中添加反应按钮?
- c# - 为什么 Blazor wasm 应用程序中的 CSharpCompilation.GetDiagnostics 方法在异步方法中使用时会抛出 System.PlatformNotSupportedException?
- winapi - Win32 函数成功后如何从 PWSTR 中检索字符串?
- macos - Rosetta 下的运行时库崩溃
- c++ - 如何在 lambda 捕获列表中创建指针?
- javascript - 如何使用嵌套对象的地图准确呈现两个复选框?