代码之家  ›  专栏  ›  技术社区  ›  John

这个_OpenUI5演练中的helloDialog

  •  1
  • John  · 技术社区  · 7 年前

    我正在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();
            }
        });
    });
    

    我有点怀疑 this._helloDialog = new HelloDialog(this.getRootControl());

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

    1 回复  |  直到 3 年前
        1
  •  3
  •   Juan Tonina    7 年前

    _helloDialog 是的属性 this

     "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