コード例 #1
0
        public override bool HasBinding(ScriptValue name)
        {
            var foundBinding = BindingObject.HasProperty(name);

            if (!foundBinding)
            {
                return(false);
            }

            if (!withEnvironment)
            {
                return(true);
            }

            var unscopables = BindingObject.Get(Symbol.Unscopables);

            if (unscopables.IsObject)
            {
                var blocked = Agent.ToBoolean(((ScriptObject)unscopables).Get(name));
                if (blocked)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public override ScriptValue GetBindingValue(ScriptValue name, bool strict)
        {
            var value = BindingObject.HasProperty(name);

            if (!value)
            {
                if (strict)
                {
                    throw BindingObject.Agent.CreateReferenceError();
                }

                return(ScriptValue.Undefined);
            }

            return(BindingObject.Get(name, BindingObject));
        }