SAP UI5 XML 視圖在實例化時就已經確定了 BindingSyntax 的實現版本了

我有一個 SAP UI5 應用,在 index.js 裏創建一個 XMLView 即 XML 視圖的實例。

關於這個 index.js 的更多詳細用法,在筆者這篇教程裏有介紹:

在 XML 視圖構造函數裏,執行 applySettings 方法:

首先需要將 XMLView.create 方法傳入的輸入參數,即包含了 viewName 字段的 JSON 對象的值解析出了:

bindingInfo 的 get 方法自動被觸發:

oBindingInfo = this.extractBindingInfo(oValue, oScope, !isObjectType(oKeyInfo.type));

一旦 bindingInfo 的 parse 方法被訪問後,就會自動調用 Object.defineProperty 給 parse 屬性設置的 get 方法:

上圖就是 SAP UI5 確認 Parser 實現版本的邏輯,如果 Configuration 裏的 bindingSyntax 值爲 simple,get 返回的 parse 屬性就爲 bindingParser.simple, 反之返回 ComplexParser.

JavaScript 裏通過 Object.defineProperty 設置的 get 函數的作用是什麼?

在JavaScript中,通過使用Object.defineProperty方法可以定義一個對象的屬性,並指定該屬性的特性(屬性描述符)。其中,可以指定get函數作爲該屬性的getter。

get函數是一個方法,它可以讓我們在讀取一個屬性值的時候,自動觸發一些邏輯。在使用get函數時,我們不需要在對象上直接定義一個屬性,而是在屬性描述符中使用get方法來定義一個屬性的讀取器。

下面是一個使用Object.defineProperty方法定義get函數的例子:

var person = {
  firstName: 'John',
  lastName: 'Doe'
};

Object.defineProperty(person, 'fullName', {
  get: function() {
    return this.firstName + ' ' + this.lastName;
  }
});

console.log(person.fullName); // "John Doe"

在上面的例子中,我們使用Object.defineProperty方法在person對象中定義了一個fullName屬性,並指定了get函數。當我們讀取fullName屬性時,get函數會自動被調用,並返回firstName和lastName組成的完整名稱。

在實際開發中,get 函數的應用非常廣泛,比如在Vue.js中,就使用了get函數來監聽數據變化並觸發視圖的重新渲染。使用 get 函數,可以使我們更加靈活地控制對象屬性的讀取邏輯,從而提高代碼的可維護性和可讀性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章