// ReSharper disable once RedundantOverridenMember /* * public override string GetStringHashCode() * { * // We need to override it to make sure this method gets added to the String prototype. * return this; * } */ public override int GetHashCode() { var result = Jsni.@this().member("$hashCode"); if (result == null) { var hash = 0; for (var i = 0; i < Length; i++) { var character = this.As <JsString>().charCodeAt(i); hash = ((hash << 5) - hash) + character; hash = hash & hash; // Convert to 32bit integer } result = hash.As <JsObject>(); Jsni.@this().memberset("$hashCode", result); } return(result.As <int>()); }
public void IndexerOverride() { Jsni.reference("window").memberset("IndexerOverride", Jsni.@object(new { items = Jsni.array(), item = Jsni.function((index, value) => { if (Jsni.arguments().As <JsArray>().length == 1) { return(Jsni.@this().member("items").As <JsArray>()[index]); } else { Jsni.@this().member("items").As <JsArray>()[index] = value; return(null); } }) })); var indexerOverride = Jsni.reference("window").member("IndexerOverride").As <IndexerOverrideClass>(); indexerOverride[3] = "foo"; QUnit.AreEqual(indexerOverride[3], "foo"); }