【问题标题】:this._helloDialog in OpenUI5 walkthroughOpenUI5 演练中的 this._helloDialog
【发布时间】:2018-01-01 14:08:16
【问题描述】:

我是 JavaScript 和 OpenUI5 的新手。 我正在通过 openUi5 网站OpenUI5 walkthrough demo 上的演练演示

我通过以下代码:

sap.ui.define([
    "sap/ui/core/UIComponent",
    "sap/ui/model/json/JSONModel",
    "sap/ui/demo/wt/controller/HelloDialog"
], function(UIComponent, JSONModel, HelloDialog) {
    "use strict";
    return UIComponent.extend("sap.ui.demo.wt.Component", {
        metadata: {
            manifest: "json"
        },
        init: function() {
            // call the init function of the parent
            UIComponent.prototype.init.apply(this, arguments);
            // set data model
            var oData = {
                recipient: {
                    name: "World"
                }
            };
            var oModel = new JSONModel(oData);
            this.setModel(oModel);

            // set dialog
            this._helloDialog = new HelloDialog(this.getRootControl());
        },

        openHelloDialog: function() {
            this._helloDialog.open();
        }
    });
});

我对@9​​87654323@一行有疑问

如果_helloDialog没有定义,我们使用的是严格模式,那么为什么系统不抛出_helloDialog is undefined的消息?

【问题讨论】:

    标签: sapui5 walkthrough


    【解决方案1】:

    _helloDialogthis(控制器)的属性,创建对象时不需要初始化属性。

     "use strict"
    var example = {};
    example.newProperty = "i am a new property"; //This is absolutely correct
    
    undefinedVariable = 1; // This is going to throw an error

    严格模式可防止您隐式创建全局变量(就像undefinedVariable = 1; 所做的那样)。但它不会阻止向对象添加属性。

    如果你对防止创建属性感兴趣,我建议阅读Freeze vs Seal

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多