簡體   English   中英

我怎樣才能在 gjs 中使用“lang”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM