gpt4 book ai didi

javascript - Google Closure中的 'command'有原型(prototype)吗?

转载 作者:行者123 更新时间:2023-12-02 14:37:26 25 4
gpt4 key购买 nike

我正在使用 Google Closure 并尝试执行如下操作:

abc.edf.commands.showToast = function() {
abc.edf.commands.showToast.test(); // this works fine
this.test2(); // this will throw an error like:
// exception_logger.js:88 TypeError: this.test2 is not a function
};

abc.edf.commands.showToast.test = function() {
console.log('test');
};

abc.edf.commands.showToast.prototype.test2 = function() {
console.log('test2');
};

我认为 JavaScript 中的每个对象都有“原型(prototype)”。那么是因为“命令”不是对象吗?或者我错过了什么?谢谢:)

最佳答案

正如 Felix Kling 评论的那样,您需要使用 new 创建一个对象才能使用 test2 原型(prototype)函数。这是一个例子:

goog.provide('abc.edf.commands.showToast');

/** @constructor */
abc.edf.commands.showToast = function() {};

abc.edf.commands.showToast.test = function() {
console.log('test');
};

abc.edf.commands.showToast.prototype.test2 = function() {
console.log('test2');
};

abc.edf.commands.showToast.test(); // static class method
var foo = new abc.edf.commands.showToast();
foo.test2(); // instance method

您可以尝试在 online closure compiler 中输入该代码。以下是使用简单编译的结果:

var abc={edf:{}};
abc.edf.commands={};
abc.edf.commands.showToast=function(){};
abc.edf.commands.showToast.test=function(){console.log("test")};
abc.edf.commands.showToast.prototype.test2=function(){console.log("test2")};
abc.edf.commands.showToast.test();
var foo=new abc.edf.commands.showToast;
foo.test2();

以下是使用高级编译的编译结果:

console.log("test");
console.log("test2");

为了测试,我将编译后的代码保存到文件“showToast.js”中,并制作了一个简单的 html 页面来加载它:

<!doctype html>
<html>
<head>
</head>
<body>
<p>ShowToast Test</p>
<script src="showToast.js"></script>
</body>
</html>

关于javascript - Google Closure中的 'command'有原型(prototype)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37331577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com