2

我知道如何在 C++ 中定义一些东西。例如:

#define ce cout<<"\n";

现在,如果我们使用ce代码的任何位置,它将输出cout<<"\n";
我正在尝试使用此 JavaSvript:

#define go document.write

所以,如果我想显示/输出一些东西,我想写

go('Great!');

现在,这将Great!在浏览器中输出。但是这种define方法在 JavaScript 中不起作用

4

4 回答 4

12

你不能,至少不能像 C/C++ 那样做。但是,您可以将函数分配给任何变量:

var go = document.write;

document.write正如所指出的,由于范围的变化,这将不起作用。获得具有正确范围的实际功能的一种解决方案是:

var go = document.write.bind(document);
// Now call
go('Great!');

.bind无法在 IE8 及更低版本中运行的节点。

于 2013-05-07T18:44:45.730 回答
3

另一个选项是 with Object.defineProperty,它允许您设置不可写、不可配置或不可枚举的东西……特别是在window对象上(因此有全局访问权限)。尝试这个:

Object.defineProperty(window, "go", {
    enumerable: false,
    configurable: false,
    writable: false,
    value: function (msg) {
        console.log(msg);
    }
});

演示:http: //jsfiddle.net/xm3mT/

您可以使用 ,而不是将 设置value为匿名函数bind,例如:

value: console.log.bind(console)

尽管使用我的第一个示例也一样好。

我不确定您是否使用document.write,但您通常不想使用它...当然,这取决于您。尽管如此,我console.log只是用作示例。

参考:

于 2013-05-07T18:54:07.473 回答
1

您使用“var”关键字定义变量。

var name = "Jessica";

您也可以分配一个功能:
var myFunction = function() {
// do something
};

Javascript 是松散类型的,因此您无需指定它是什么类型的变量。

于 2013-05-07T18:45:09.087 回答
1

JavaScript 不是编译语言,因此没有与 C++ 等效的define. 你必须使用变量。但是您可以将函数分配给变量(因为 JavaScript 中的函数是对象)以获得基本相同的结果。

于 2013-05-07T18:45:24.500 回答