如何使用 2 种方法(alert 和 console.log)编写函数(对象)以便能够像这样使用它:
fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log.
执行方式并不重要。我知道它必须是自调用函数,但我做不到。我不想这样使用它 - fname.alert("text")。
问候语 克里斯
最佳答案
不可能以任何理智的方式在任何地方都有效。您发布的示例将要求您为这些属性定义一个访问器——这只适用于现代 JS 引擎。
无论如何,这是实际执行此操作的代码。 但请不要在任何实际应用中使用它!查看最后一个代码块以获得更好的解决方案
function fname(message) {
var obj = {};
Object.defineProperty(obj, 'alert', {
get: function() {
alert(message);
}
});
Object.defineProperty(obj, 'cons', {
get: function() {
console.log(message);
}
});
return obj;
}
这是有效的,因为 fname('hello').alert
会导致执行 alert
属性的 getter 函数——虽然这样的函数通常应该返回一个value 没有什么可以阻止它做一些事情,比如显示 alert()
消息。
不过,您可以以一种适用于任何地方的方式实现的是这样的:
fname('text').alert();
fname('text').cons();
可以这样做:
function fname(message) {
return {
alert: function() {
alert(message);
},
cons: function() {
console.log(message);
}
}
}
关于javascript函数参数位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648882/