javascript函数参数的地方

时间:2012-11-30 16:13:49

标签: javascript function

如何使用2种方法(alert和console.log)编写函数(对象),以便能够像这样使用它:

fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log. 

这些方法对于执行方式并不重要。我知道它必须是自我唤醒功能,但我不能这样做。我不想这样使用它 - fname.alert(“text”)。

问候 KRISS

2 个答案:

答案 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