如何寫有2種方法(警報和執行console.log),以便能夠使用這樣的功能(對象):javascript函數參數的地方
fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log.
方法不BYT執行的重要途徑。我知道它必須是自我喚醒功能,但我不能這樣做。我不想用這種方式 - fname.alert(「文本」)。
問候 KRISS
如何寫有2種方法(警報和執行console.log),以便能夠使用這樣的功能(對象):javascript函數參數的地方
fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log.
方法不BYT執行的重要途徑。我知道它必須是自我喚醒功能,但我不能這樣做。我不想用這種方式 - fname.alert(「文本」)。
問候 KRISS
這是不可能在任何地方工作,任何理智的方式。您發佈的示例需要您爲這些屬性定義一個訪問者 - 並且只適用於現代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
會導致getter函數爲alert
財產被執行 - 雖然這樣的功能通常應該返回一個值有什麼可阻止它做類似於顯示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
。
這可能不是最有效的做事方式,因爲我已經讀到匿名函數實際上是在它們所屬的函數中重建的。 – corazza
如果我們能夠看到這種結構的用途,效率將是相關的。 –
比你非常問候 –
不客氣。請接受答案,因爲這非常適合堆棧溢出的感謝。您可以點擊我帖子左側的灰色複選標記圖標。 – ThiefMaster