Пример #1
0
        public static EcmaValue Object([NewTarget] RuntimeObject constructor, EcmaValue value)
        {
            if (constructor != null && !constructor.IsWellknownObject(WellKnownObject.ObjectConstructor))
            {
                return(RuntimeObject.CreateFromConstructor <EcmaObject>(constructor, SharedObjectHandle.Null));
            }
            switch (value.Type)
            {
            case EcmaValueType.Boolean:
                return(new PrimitiveObject(value, WellKnownObject.BooleanPrototype));

            case EcmaValueType.Number:
                return(new PrimitiveObject(value, WellKnownObject.NumberPrototype));

            case EcmaValueType.String:
                return(new PrimitiveObject(value, WellKnownObject.StringPrototype));

            case EcmaValueType.Symbol:
                return(new PrimitiveObject(value, WellKnownObject.SymbolPrototype));

            case EcmaValueType.BigInt:
                return(new PrimitiveObject(value, WellKnownObject.BigIntPrototype));

            case EcmaValueType.Object:
                return(value);
            }
            return(new EcmaObject());
        }