如何使用 2 种方法(alert 和 console.log)编写函数(对象)以便能够像这样使用它:
fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log.
就执行方式而言,这些方法并不重要。我知道它必须是自我调用功能,但我做不到。我不想以这种方式使用它 - fname.alert("text")。
问候克里斯
如何使用 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 函数 - 虽然这样的函数通常应该返回一个值,但没有什么可以阻止它执行诸如显示alert()
消息之类的操作。
但是,您可以通过一种适用于任何地方的方式实现的目标是这样的:
fname('text').alert();
fname('text').cons();
这可以这样做:
function fname(message) {
return {
alert: function() {
alert(message);
},
cons: function() {
console.log(message);
}
}
}
function fname(str) {
return {
alert:function(){alert(str)},
cons:function(){console.log(str)}
}
}
做fname("text").alert()
警报text
。