[英]how can I use "lang" in gjs?
我最近正在研究 Gnome shell 扩展。 我看了一些代码,像这样:
const Lang = imports.lang;
const extension = new Lang.Class({...})
我在 GJS 中找不到有关 Lang 的任何信息。
go 应该去哪里找相关的开发手册呢?
不要再使用Lang
了; 它已被弃用,并且有更好的方法。 它是在Function.prototype.bind()
和ES6 Classes之前创建的。 一些阅读:
信号回调
function myCallback(foo, arg1) {
if (this === foo)
log('`foo` is correctly bound to `this`');
}
// OLD
fooObject.connect('signal', Lang.bind(myCallback, this));
// NEW
fooObject.connect('signal', myCallback.bind(this));
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;
}
);
它是 gjs 的内置模块——参见modules/lang.js 。 它包括两个主要的东西: bind()
(使“this”指向闭包中的逻辑对象的助手)和Class
,它基本上用没有类概念的语言实现了一个类......它会是如果没有这个,很难使用 GObject(一个基于类的对象系统)。
这是22497990的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.