@morjs/runtime-base
Version:
mor runtime base
39 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSharedProperty = void 0;
var env_1 = require("../env");
var event_1 = require("../event");
var hooks_1 = require("../hooks");
// 默认的共享对象
var SHARED = {
$morHooks: hooks_1.hooks,
$event: event_1.event
};
/**
* 获取全局共享属性,用于作为原子化的兜底实现
* 1. 首先查找上下文中对应的属性
* 2. 如果不存在,则查找 getApp 中的
* 3. 如果不存在,则查找 小程序环境的 globalObject, 如 my 中是否存在
* 4. 如果不存在,则使用 SHARED 作为兜底
* @param propName - 共享属性名称
* @param context - 当前执行环境的上下文
* @returns propValue
*/
function getSharedProperty(propName, context) {
// 先从当前上下文张获取,如果上下文存在的话
if (context && context[propName] != null)
return context[propName];
// 尝试从 getApp 中获取
if (typeof getApp === 'function') {
var app = getApp();
if (app && app[propName] != null)
return app[propName];
}
// 从全局对象中获取
var globalObj = (0, env_1.getGlobalObject)();
if (globalObj && globalObj[propName] != null)
return globalObj[propName];
return SHARED[propName];
}
exports.getSharedProperty = getSharedProperty;
//# sourceMappingURL=getSharedProperty.js.map