You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mdev.js 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. o = {a:2,b:3}
  2. // Object.defineProperties()
  3. Object.defineProperty(o,"b",{
  4. enumerable:false,
  5. })
  6. Object.defineProperty(o,"c",{
  7. enumerable:false,
  8. })
  9. Object.defineProperty(o,"d",{
  10. // enumerable:false,
  11. })
  12. zxc2 = Object.getOwnPropertyDescriptors (o)
  13. // zxc2.a.enumerable=false
  14. function okv(obj) {
  15. var k,v
  16. for ([k,v] of Object.entries(obj))
  17. // body...
  18. clog("!",k,v)
  19. }
  20. cnt = 0
  21. prxt = {
  22. set:function(obj, prop, val,receiver){
  23. clog("prxt set ",obj, prop, val,receiver)
  24. return
  25. return Reflect.set(...arguments)
  26. },
  27. get:function(obj, prop,receiver){
  28. if (window.cnt){
  29. window.cnt+=1
  30. clog("prxt get ret",cnt,prop)
  31. return
  32. }
  33. window.cnt+=1
  34. clog("prxt get",obj, prop,receiver)
  35. // clog("prxt get",prop)
  36. // clog("prxt get")
  37. return
  38. return Reflect.get(...arguments)
  39. },
  40. // __prx:true,
  41. // rec:
  42. }
  43. delete obsObj
  44. {
  45. class obsObj {
  46. constructor(o){
  47. this.db = o
  48. }
  49. _pub_msg(m){
  50. clog("ixi PUB MSG",m)
  51. }
  52. _rec_msg(that,m){
  53. clog("ixi REC MSG2",m)
  54. }
  55. __noSuchMethod__(){
  56. clog("__lookupGetter__~",arguments)
  57. }
  58. }
  59. window.obsObj = obsObj
  60. glob_mx.obsobj =new obsObj({})
  61. glob_mx.obsobj2 =new obsObj({})
  62. }
  63. glob_mx.obsobj.__proto__ = new Proxy(glob_mx.obsobj.__proto__,prxt)
  64. delete Magic
  65. {
  66. class Magic {
  67. constructor () {
  68. return new Proxy(this, this);
  69. }
  70. get (target, prop) {
  71. return this[prop] || 'MAGIC';
  72. }
  73. }
  74. window.Magic = Magic
  75. glob_mx.magic =new Magic({})
  76. glob_mx.magic2 =new Magic({})
  77. // glob_mx.magic3 =new Magic({})
  78. }
  79. // __lookupGetter__
  80. // function replacer(a0,a1,a2,a3,a4){
  81. hdn = [
  82. "__path_arr",
  83. "__path",
  84. "__dpth",
  85. ]
  86. function replacer(key,val){
  87. // clog("REP",key,val,this)
  88. var v,k
  89. if (typeof(val) == "object" && val != null){
  90. // val._add="Z"
  91. v = Object.assign({},val)
  92. for (k of hdn){
  93. v[k] = val[k]
  94. }
  95. return v
  96. }
  97. return val
  98. // return a0
  99. }
  100. function jh(o){
  101. return JSON.parse(JSON.stringify(o, replacer))
  102. }
  103. s1 ={a:{b:{c:3}}}
  104. // JSON.stringify({a:{b:{c:3}}}, replacer)
  105. // JSON.stringify({}, replacer)
  106. // JSON.stringify({a:{b:{c:3}}}, replacer)
  107. // JSON.stringify({}, replacer[, space]])
  108. //
  109. m = {}
  110. m.m0 = {
  111. // k:["z2"]
  112. }
  113. m.m1 = {
  114. k:["z2","z3"]
  115. }
  116. m.m2 = {
  117. k:["z3"]
  118. }
  119. // m.
  120. function isSubset(subset,superset){
  121. for (var elem of subset) {
  122. if (!superset.includes(elem)) {
  123. return false;
  124. }
  125. }
  126. return true;
  127. }
  128. function isSubset_arr(subset,superset){
  129. for (var elem of subset) {
  130. if (Array.isArray(elem)){
  131. if (!new Set(elem).intersection(superset).size){
  132. return false
  133. }
  134. } else if (!superset.includes(elem)) {
  135. return false;
  136. }
  137. }
  138. return true;
  139. }
  140. function sym_info(o){
  141. var k,v
  142. for ([k,v] of Object.entries(syms)){
  143. // clog(k,v)
  144. clog(k,o[v])
  145. }
  146. }
  147. function art(m,o){
  148. var k,v
  149. var r = 0
  150. var ret = {}
  151. var md =Object.getOwnPropertyDescriptors(m)
  152. for ([k,v] of Object.entries(md)){
  153. if (typeof(v.value) == "symbol"){
  154. r+=1
  155. ret[k]=v.value
  156. }
  157. // for ([k,v] in m){
  158. // case
  159. clog(k,typeof(v.value),v.value,[v])
  160. }
  161. return {cnt:r,o:ret}
  162. }
  163. syms = art(Symbol).o
  164. function match(mx,m,o){
  165. var k,v,k2,v2
  166. var r = 0
  167. // clog("@",mx,m,o)
  168. for ([k,v] of Object.entries(m || {})){
  169. v2 = o[k]
  170. // clog("M~",k,typeof(v),typeof(v2),v,v2)
  171. if (typeof(v) == "string" && typeof(v2) == "string") {
  172. r += !(v==v2)
  173. } else if (Array.isArray(v) && Array.isArray(v2)){
  174. r += !(isSubset_arr(v,v2))
  175. } else if (Array.isArray(v) && typeof(v2) == "string"){
  176. // r += !(isSubset_arr(v2,v))
  177. // r += !(isSubset_arr(v2,v))
  178. r += !v.includes(v2)
  179. // clog("!!!!!!!!!!!!!",v,v2,isSubset_arr(v2,v))
  180. } else if (Array.isArray(v2) && typeof(v) == "string"){
  181. r += !(v2.includes(v))
  182. }
  183. if (r){
  184. return !r
  185. }
  186. }
  187. return !r
  188. }
  189. // clog("m1,m2",match({},m.m1,m.m2))
  190. // clog("m2,m1",match({},m.m2,m.m1))
  191. // clog("m2,m0",match({},m.m2,m.m0))
  192. // clog("m0,m2",match({},m.m0,m.m2))
  193. a = ["A","B","C"]
  194. a1 = ["A","B",,"D"]
  195. a1[-1]="z"
  196. a1["q"]="z2"
  197. s2 = "str2"
  198. r1 = [/a\d/,/b[a-z]\d/]
  199. delete Str
  200. {
  201. class Str extends String {
  202. // constructor(o){
  203. // super(o)
  204. // }
  205. /*
  206. this.db = o
  207. }
  208. _pub_msg(m){
  209. clog("ixi PUB MSG",m)
  210. }
  211. _rec_msg(that,m){
  212. clog("ixi REC MSG2",m)
  213. }
  214. */
  215. }
  216. window.Str = Str
  217. }
  218. function gpt(){
  219. try {
  220. clog("gx gpt",get_participants)
  221. clog("gx gpt2",get_participants())
  222. } catch (err) {
  223. clog("gx gpt err:",err)
  224. }
  225. }
  226. gpt()
  227. {
  228. class QString extends String {
  229. isEmpty() {
  230. return this.length === 0;
  231. }
  232. concat(){
  233. return new QString(this + Array.prototype.join.call(arguments, ''));
  234. }
  235. }
  236. var testQStr1 = new QString("abc");
  237. var testQStr2 = new QString("as easy as");
  238. var testQStr3 = new QString("123");
  239. var testStr3 = new String("123");
  240. console.log(testQStr1,testQStr1 == "abc");
  241. test1 = testQStr1.concat(testQStr2,testQStr3);
  242. console.log(test1,test1=="abcas easy as123");
  243. }
  244. function switch_t(m,o){
  245. // var t
  246. // var flags = {
  247. // leaf:"??",
  248. // prx:"??",
  249. // }
  250. // t = typeof(o)
  251. // t=o
  252. // var s1 = t
  253. // var s2 = 2
  254. // var s0 = [s1,s2]
  255. // switch (...s0){
  256. switch (o[0],o[1]){
  257. case m[0][0],m[0][1]:
  258. clog("m0")
  259. break;
  260. case m[1][0],m[1][1]:
  261. clog("m1")
  262. clog(m[1][0],m[1][1],":",o[0],o[1])
  263. // clog("~MX~","tlu")
  264. break;
  265. default:
  266. clog("default")
  267. }
  268. }
  269. o1 = []
  270. m1 = [[],[]]
  271. function wait(ms) {
  272. return new Promise(r => setTimeout(r, ms));
  273. }
  274. pfn1= async function(resolve, reject) {
  275. clog("RESV")
  276. // resolve('Success!');
  277. window.pfn1_cb = function(/*resolve, reject*/) {
  278. resolve('Success!');
  279. }
  280. await wait(3000)
  281. reject("TIMED_OUT")
  282. }
  283. pfn2= function(resolve, reject) {
  284. clog("RESV")
  285. resolve({zzz:'Success!'});
  286. }
  287. prm ={}
  288. // prm.resolve("zzz")
  289. // promise1 = new Promise(pfn1);
  290. promise1 = new Promise(pfnf(prm));
  291. setTimeout(prm.reject,3000,"ST REJ")
  292. clog("and then")
  293. promise1.then(function(value) {
  294. console.log(this,value,arguments);
  295. // expected output: "Success!"
  296. });
  297. promise1.then(function(value) {
  298. console.log("this,value,arguments");
  299. // expected output: "Success!"
  300. });
  301. promise1.catch(function(value) {
  302. console.log("REJECT",this,value,arguments);
  303. // expected output: "Success!"
  304. });
  305. clog("and then...")
  306. prm.resolve("11111zzz","zzzzzzz")