JsSymbol.cs 962 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Runtime.CompilerServices;
  2. using Jint.Runtime;
  3. namespace Jint.Native;
  4. public sealed class JsSymbol : JsValue, IEquatable<JsSymbol>
  5. {
  6. internal readonly JsValue _value;
  7. internal JsSymbol(string value) : this(new JsString(value))
  8. {
  9. }
  10. internal JsSymbol(JsValue value) : base(Types.Symbol)
  11. {
  12. _value = value;
  13. }
  14. public override object ToObject() => _value;
  15. /// <summary>
  16. /// https://tc39.es/ecma262/#sec-symboldescriptivestring
  17. /// </summary>
  18. public override string ToString()
  19. {
  20. var value = _value.IsUndefined() ? "" : _value.AsString();
  21. return "Symbol(" + value + ")";
  22. }
  23. public override bool Equals(JsValue? obj)
  24. {
  25. return Equals(obj as JsSymbol);
  26. }
  27. public bool Equals(JsSymbol? other)
  28. {
  29. return ReferenceEquals(this, other);
  30. }
  31. public override int GetHashCode()
  32. {
  33. return RuntimeHelpers.GetHashCode(this);
  34. }
  35. }