如何使用2种方法(alert和console.log)编写函数(对象),以便能够像这样使用它:
fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log.
这些方法对于执行方式并不重要。我知道它必须是自我唤醒功能,但我不能这样做。我不想这样使用它 - fname.alert(“text”)。
问候 KRISS
答案 0 :(得分:5)
不可能以任何理智的方式在任何地方运作。您发布的示例将要求您为这些属性定义访问器 - 并且仅适用于现代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函数被执行 - 虽然这样的函数通常应该返回一个值,但没有什么可以阻止它做像显示{ {1}}消息。
alert()
这可以这样做:
fname('text').alert();
fname('text').cons();
答案 1 :(得分:4)
function fname(str) {
return {
alert:function(){alert(str)},
cons:function(){console.log(str)}
}
}
执行fname("text").alert()
提醒text
。