我知道如何用C ++定义内容。例如:
#define ce cout<<"\n";
现在,如果我们使用ce
代码的任何位置,它将输出cout<<"\n";
我正在尝试使用这个JavaSvript:
#define go document.write
所以,如果我想显示/输出某些东西,我想写
go('Great!');
现在,这将在浏览器中输出Great!
。但是此define
方法无法在JavaScript中使用
答案 0 :(得分:12)
你不能,至少不是C / C ++的方式。但是,您可以为任何变量分配函数:
var go = document.write;
正如所指出的,由于范围的变化,这对document.write
不起作用。获得具有正确范围的实际功能的一种解决方案是:
var go = document.write.bind(document);
// Now call
go('Great!');
.bind
在IE8及更低版本中不起作用的节点。
答案 1 :(得分:3)
另一个选项是Object.defineProperty
,它允许你设置一些不可写,可配置或可枚举的东西......特别是在window
对象上(因此有全局访问权限)。试试这个:
Object.defineProperty(window, "go", {
enumerable: false,
configurable: false,
writable: false,
value: function (msg) {
console.log(msg);
}
});
DEMO: http://jsfiddle.net/xm3mT/
您可以使用value
,而不是将bind
设置为匿名函数,而不是:
value: console.log.bind(console)
虽然使用我的第一个例子就好了。
我不完全确定你使用document.write
,但通常不想使用它...当然,这取决于你。尽管如此,我只使用console.log
作为示例。
参考文献:
Object.defineProperty
docs - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty Object.defineProperty
浏览器兼容性 - http://kangax.github.io/es5-compat-table/#Object.defineProperty Function.prototype.bind
docs - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind Function.prototype.bind
浏览器兼容性 - http://kangax.github.io/es5-compat-table/#Function.prototype.bind 答案 2 :(得分:1)
使用“var”关键字定义变量。
var name = "Jessica";
您也可以指定一个功能:
var myFunction = function() {
// do something
};
Javascript是松散类型的,因此您不指定它是什么类型的变量。
答案 3 :(得分:1)
JavaScript不是一种编译语言,因此没有与C ++的define
等价的东西。你必须使用变量。但是您可以将函数赋值给变量(因为JavaScript中的函数是对象)以获得基本相同的结果。