我如何在 gjs 中使用 "lang"?
how can I use "lang" in gjs?
我最近在研究 Gnome shell 扩展。我看了一些代码,像这样:
const Lang = imports.lang;
const extension = new Lang.Class({...})
我在 GJS 中找不到有关 Lang 的任何信息。
相关的开发手册去哪里找?
不要再使用Lang
;它已被弃用,并且有更好的方法。它创建于 Function.prototype.bind()
and ES6 Classes 之前。一些阅读:
信号回调
// NOTE: the emitting object is always the first argument,
// so `this` is usually bound to a different object.
function myCallback(sourceObject, arg1) {
if (this === sourceObject)
log('`sourceObject` is correctly bound to `this`');
}
// OLD
sourceObject.connect('signal-name', Lang.bind(myCallback, sourceObject));
// NEW
sourceObject.connect('signal-name', myCallback.bind(sourceObject));
GObject 类
// OLD
const MyLegacyClass = new Lang.Class({
GTypeName: 'MyLegacyClass',
Extends: GObject.Object,
_init(a, b) {
this.parent(a);
this.b = b;
}
});
// NEW
const MyClass = GObject.registerClass({
GTypeName: 'MyLegacyClass',
}, class MyClass extends GObject.Object {
_init(a, b) {
super._init(a);
this.b = b;
}
);
我最近在研究 Gnome shell 扩展。我看了一些代码,像这样:
const Lang = imports.lang;
const extension = new Lang.Class({...})
我在 GJS 中找不到有关 Lang 的任何信息。
相关的开发手册去哪里找?
不要再使用Lang
;它已被弃用,并且有更好的方法。它创建于 Function.prototype.bind()
and ES6 Classes 之前。一些阅读:
信号回调
// NOTE: the emitting object is always the first argument,
// so `this` is usually bound to a different object.
function myCallback(sourceObject, arg1) {
if (this === sourceObject)
log('`sourceObject` is correctly bound to `this`');
}
// OLD
sourceObject.connect('signal-name', Lang.bind(myCallback, sourceObject));
// NEW
sourceObject.connect('signal-name', myCallback.bind(sourceObject));
GObject 类
// OLD
const MyLegacyClass = new Lang.Class({
GTypeName: 'MyLegacyClass',
Extends: GObject.Object,
_init(a, b) {
this.parent(a);
this.b = b;
}
});
// NEW
const MyClass = GObject.registerClass({
GTypeName: 'MyLegacyClass',
}, class MyClass extends GObject.Object {
_init(a, b) {
super._init(a);
this.b = b;
}
);