internal static IDynamic GetOwnPropertyNames(IEnvironment environment, IArgs args) { if (args[0].TypeCode != LanguageTypeCode.Object) { throw environment.CreateTypeError(""); } var obj = args[0].ConvertToObject(); var array = environment.CreateArray(); var index = 0; foreach (var name in obj) { var value = environment.CreateString(name); var desc = environment.CreateDataDescriptor(value, true, true, true); array.DefineOwnProperty((index++).ToString(), desc, false); } return(array); }
internal static IDynamic Keys(IEnvironment environment, IArgs args) { if (args[0].TypeCode != LanguageTypeCode.Object) { throw environment.CreateTypeError(""); } var obj = args[0].ConvertToObject(); var array = environment.CreateArray(); var index = 0; foreach (var name in obj) { var desc = obj.GetOwnProperty(name); if (desc.Enumerable ?? false) { desc = environment.CreateDataDescriptor(environment.CreateString(name), true, true, true); array.DefineOwnProperty((index++).ToString(), desc, false); } } return array; }
public IJsValue Evaluate(IEnvironment environment) { return environment.CreateArray(Members.Select(m => m.Evaluate(environment))); }