Acme.BookStore.HttpApi.Host/node_modules/d/lazy.js
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
'use strict';
var map = require('es5-ext/object/map')
, isCallable = require('es5-ext/object/is-callable')
, validValue = require('es5-ext/object/valid-value')
, contains = require('es5-ext/string/#/contains')
, call = Function.prototype.call
, defineProperty = Object.defineProperty
, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
, getPrototypeOf = Object.getPrototypeOf
, hasOwnProperty = Object.prototype.hasOwnProperty
, cacheDesc = { configurable: false, enumerable: false, writable: false,
value: null }
, define;
define = function (name, options) {
var value, dgs, cacheName, desc, writable = false, resolvable
, flat;
options = Object(validValue(options));
cacheName = options.cacheName;
flat = options.flat;
if (cacheName == null) cacheName = name;
delete options.cacheName;
value = options.value;
resolvable = isCallable(value);
delete options.value;
dgs = { configurable: Boolean(options.configurable),
enumerable: Boolean(options.enumerable) };
if (name !== cacheName) {
dgs.get = function () {
if (hasOwnProperty.call(this, cacheName)) return this[cacheName];
cacheDesc.value = resolvable ? call.call(value, this, options) : value;
cacheDesc.writable = writable;
defineProperty(this, cacheName, cacheDesc);
cacheDesc.value = null;
if (desc) defineProperty(this, name, desc);
return this[cacheName];
};
} else if (!flat) {
dgs.get = function self() {
var ownDesc;
if (hasOwnProperty.call(this, name)) {
ownDesc = getOwnPropertyDescriptor(this, name);
// It happens in Safari, that getter is still called after property
// was defined with a value, following workarounds that
// While in IE11 it may happen that here ownDesc is undefined (go figure)
if (ownDesc) {
if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
return ownDesc.get.call(this);
}
return value;
}
}
desc.value = resolvable ? call.call(value, this, options) : value;
defineProperty(this, name, desc);
desc.value = null;
return this[name];
};
后面还有 57 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
