using Jint.Native; using Jint.Runtime.Environments; namespace Jint.Runtime.References { /// /// Represents the Reference Specification Type /// http://www.ecma-international.org/ecma-262/5.1/#sec-8.7 /// public class Reference { private readonly JsValue _baseValue; private readonly string _name; private readonly bool _strict; public Reference(JsValue baseValue, string name, bool strict) { _baseValue = baseValue; _name = name; _strict = strict; } public JsValue GetBase() { return _baseValue; } public string GetReferencedName() { return _name; } public bool IsStrict() { return _strict; } public bool HasPrimitiveBase() { return _baseValue.IsPrimitive(); } public bool IsUnresolvableReference() { return _baseValue.IsUndefined(); } public bool IsPropertyReference() { // http://www.ecma-international.org/ecma-262/5.1/#sec-8.7 return (_baseValue.IsObject() && !_baseValue.Is()) || HasPrimitiveBase(); } } }