[英]Replicating/overriding javascript's console.log function
好的,這就是我想要做的:
console.log
中的message / errors / logs / etc不可見,因此將它們轉發到相應的Cocoa函數(我創建了一個類似- (void)log:(NSString*)msg
函數,只需將參數作為字符串並在Xcode的控制台窗口中將其打印出來即可。 現在,問題是如何100%復制console.log
所做的工作+將消息轉發到我自己的log
功能?
到目前為止,這是我所做的:
使用Javascript
console.log = function(text) {
API.log_(text);
}
Objective-C的
- (void)log:(NSString*)msg
{
NSLog(@"Logging from JS : %@", msg);
}
如果在調用console.log("something")
,“ text”是一個簡單的文本字符串,則可以正常工作。 如果我將console.log函數傳遞給一個對象,則該對象將無法正常工作(例如,在Chrome的Javascript控制台窗口中)。
你會怎么做?
是否有可能得到一個什么樣的字符串輸出console.log
通常會打印出來?
PS我試過玩JSON.stringify(obj, null, 4)
一點,但它仍然看起來不正確。 有任何想法嗎?
聽起來您想保留原始功能,同時還要捕獲輸入並將其傳遞給您的API。 這可以通過(JSFiddle)之類的東西來實現:
var original = console.log,
API = {
log_: function() {
// Your API functionality
}
};
console.log = function() {
original.apply(console, arguments);
API.log_(arguments);
};
有兩點要指出。 首先,本機console.log
可以接收任意數量的參數,因此我們使用arguments
來處理。 我們必須使用.apply()
在console
的上下文中調用原始方法,它還允許我們傳遞與原始調用完全相同的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.