检查Chrome扩展中心页面链接的此示例扩展程序,我看到它们已使用
chrome.extension.onRequest.addListener(onRequest);
Run Code Online (Sandbox Code Playgroud)
在background.js页面中,以便收听contentscript.js和
chrome.extension.sendRequest({}, function(response) {});
Run Code Online (Sandbox Code Playgroud)
在contentscript.js中,以便与background.js页面交谈.
但我无法在网络的任何地方找到这些功能的文档,只提及Google的消息传递指南
chrome.extension.sendMessage(...)
Run Code Online (Sandbox Code Playgroud)
发送,和
chrome.extension.onMessage.addListener(...)
Run Code Online (Sandbox Code Playgroud)
听
我应该使用哪些功能?sendRequest/onRequest是否已过时?Google的开发指南是否仍然是最新的?
我可以将字符串生成的函数(使用Function构造函数)的访问权限限制为父/全局范围吗?
例如:以下代码按原样打印为false,因为该函数正在窗口中存储/修改变量a.
window.a = 4;
Function("a=3;")()
console.log(a === 4);
Run Code Online (Sandbox Code Playgroud)
我可以限制对窗口/父作用域的访问并使其打印为"true"吗?
在将指定给结构foo的指针之前,我在学校的老师一直将NULL转换为(struct foo*).例如:
struct foo {
// smthg else
struct foo *ptr;
};
struct foo *bar;
bar = (struct foo*)malloc(sizeof(struct foo));
bar->ptr = (struct foo *) NULL;
Run Code Online (Sandbox Code Playgroud)
令我难以置信的是,他唯一一次测试该值是否为NULL(检查链表是否已结束)他执行以下操作
if (aux->ptr != (struct foo *) NULL) {
...
}
Run Code Online (Sandbox Code Playgroud)
我问他为什么,如果要"增长"NULL的大小以防止错误或其他什么.但不,他告诉我(非常不情愿,我认为)这是为了防止编译器出现一些可能的错误(wtf?).这真的有必要吗?
编辑:
他教的语言是C.他可能不知道用C语言铸造malloc是不必要的.我想知道他是否只是小心或无能.:P
这是我在维基百科上找到的Python中Quicksort的源代码.
def pivot(v, left, right):
i = left
for j in range(left + 1, right + 1):
if v[j] < v[left]:
i += 1 # .. incrementa-se i
v[i], v[j] = v[j], v[i]
v[i], v[left] = v[left], v[i]
return i
def qsort(v, left, right):
if right > left:
r = pivot(v, left, right)
qsort(v, left, r - 1)
qsort(v, r + 1, right)
a = [4,2,4,6,3,2,5,1,3]
qsort(a, 0, len(a)-1)
print a # prints [1, 2, 2, 3, 3, 4, 4, …Run Code Online (Sandbox Code Playgroud)