{"id":33628,"date":"2023-01-12T16:55:58","date_gmt":"2023-01-12T07:55:58","guid":{"rendered":"https:\/\/laboradian.com\/?p=33628"},"modified":"2023-01-19T14:16:01","modified_gmt":"2023-01-19T05:16:01","slug":"create-weak-reference-in-javascript","status":"publish","type":"post","link":"https:\/\/laboradian.com\/create-weak-reference-in-javascript\/","title":{"rendered":"JavaScript \u3067\u300c\u5f31\u3044\u53c2\u7167\u300d\u3092\u4f5c\u6210\u3059\u308b"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. \u300c\uff08\u666e\u901a\u306e\uff09\u53c2\u7167\u300d\u3068\u300c\u5f31\u3044\u53c2\u7167\u300d<\/h2>\n\n\n\n<p>\u4f8b\u3048\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3001<code>{ name; 'foo' }<\/code> \u3068\u3044\u3046\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c <code>obj<\/code> \u3068\u3044\u3046\u5909\u6570\u306b\u30bb\u30c3\u30c8\u3055\u308c\u305f\u5834\u5408\u3001\u3053\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f <code>obj<\/code> \u3068\u3044\u3046\u5909\u6570\u306b\u3088\u3063\u3066\u300c<strong>\u53c2\u7167<\/strong>\u300d\u3055\u308c\u3066\u3044\u308b\u3068\u8a00\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let obj = { name: 'foo' }<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u3042\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078\u306e\u300c<strong>\uff08\u666e\u901a\u306e\uff09\u53c2\u7167<\/strong>\u300d\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u9593\u3001\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u30e1\u30e2\u30ea\u4e0a\u304b\u3089\u52dd\u624b\u306b\u524a\u9664\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u3060\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u4f7f\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3002\u5f53\u305f\u308a\u524d\u306e\u8a71\u3067\u306f\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u304b\u3057\u3001\u3053\u306e\u5f8c \u3053\u306e <code>obj<\/code> \u304c\u5225\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53c2\u7167\u3057\u305f\u3068\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>obj = { name: 'bar' }<\/code><\/pre>\n\n\n\n<p>\u3059\u308b\u3068\u3001\u6700\u521d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 <code>{ name: 'foo' }<\/code> \u306f\u3069\u3053\u304b\u3089\u3082\u53c2\u7167\u3055\u308c\u306a\u304f\u306a\u3063\u305f\u305f\u3081\uff08\u4f7f\u3044\u305f\u304f\u3066\u3082\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\uff09\u3001\u5fc5\u8981\u306a\u3044\u3068\u5224\u65ad\u3055\u308c\u3001\u3069\u3053\u304b\u3057\u3089\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067<strong>\u30e1\u30e2\u30ea\u4e0a\u304b\u3089\u524a\u9664<\/strong>\u3055\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u3002\uff08\u3053\u306e\u6a5f\u80fd\u3092\u3001<a rel=\"noreferrer noopener\" href=\"https:\/\/ja.wikipedia.org\/wiki\/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3\" target=\"_blank\">\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3<\/a>\u3068\u8a00\u3044\u307e\u3059\uff09<\/p>\n\n\n\n<p>\u3053\u308c\u306b\u5bfe\u3057\u3066\u300c<strong>\u5f31\u3044\u53c2\u7167<\/strong>\u300d\u306f\u3001\u53c2\u7167\u3067\u306f\u3042\u308b\u3051\u308c\u3069\u3082\u3001\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u3088\u308b\u524a\u9664\u5bfe\u8c61\u3068\u306a\u308b\u53c2\u7167\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3044\u305a\u308c\u30e1\u30e2\u30ea\u4e0a\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. JavaScript \u3067\u300c\u5f31\u3044\u53c2\u7167\u300d\u3092\u6271\u3046<\/h2>\n\n\n\n<p>JavaScript \u3067\u300c<strong>\u5f31\u3044\u53c2\u7167<\/strong>\u300d\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001<a rel=\"noreferrer noopener\" href=\"https:\/\/developer.mozilla.org\/ja\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/WeakRef\" target=\"_blank\">WeakRef<\/a> \u3068\u3044\u3046\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2-1.\u300c\u5f31\u3044\u53c2\u7167\u300d\u3092\u4f5c\u6210\u3059\u308b<\/h3>\n\n\n\n<p>\u3042\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5909\u6570 <code>obj<\/code> \u306b\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u308b\u3068\u3057\u307e\u3059\uff08\u666e\u901a\u306e\u300c\u53c2\u7167\u300d\u3067\u3059\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let obj = { name: \"foo\" }\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e <code>obj<\/code> \u3092\u5f15\u6570\u306b\u3057\u3066\u3001WeakRef \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const weakRef = new WeakRef(obj)<\/code><\/pre>\n\n\n\n<p>\u5143\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u300c<strong>\u5f31\u3044\u53c2\u7167<\/strong>\u300d\u3092\u4fdd\u6301\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u5f8c\u3001<code>obj<\/code> \u304c\u5225\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53c2\u7167\u3057\u305f\u3068\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>obj = { name: 'bar'}<\/code><\/pre>\n\n\n\n<p>\u3059\u308b\u3068\u3001\u5143\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 <code>{ name: 'foo'}<\/code> \u306f\u3001\u300c<strong>\u5f31\u3044\u53c2\u7167<\/strong>\u300d\u306f\u3042\u308b\u3082\u306e\u306e \u666e\u901a\u306e\u300c<strong>\u53c2\u7167<\/strong>\u300d\u306f\u306a\u304f\u306a\u308a\u307e\u3059\u306e\u3067\u3001\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u3088\u308b\u524a\u9664\u5bfe\u8c61\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2-2. \u53c2\u7167\u5148\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b<\/h3>\n\n\n\n<p>\u53c2\u7167\u5148\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001WeakRef \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e <a rel=\"noreferrer noopener\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/WeakRef\/deref\" target=\"_blank\">deref<\/a> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3044\u307e\u3059\u3002\u53c2\u7167\u5148\u304c\u65e2\u306b\u524a\u9664\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f <code>undefined<\/code> \u3092\u8fd4\u3057\u307e\u3059\u306e\u3067\u3001\u53c2\u7167\u5148\u304c\u524a\u9664\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u306e\u5224\u5b9a\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>weakRef.deref()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. \u304a\u308f\u308a\u306b<\/h2>\n\n\n\n<p>\u5b9f\u969b\u306b\u4f7f\u3046\u6a5f\u4f1a\u306f\u3001\u3042\u307e\u308a\u306a\u3044\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. \u53c2\u8003<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/tc39.es\/ecma262\/multipage\/managing-memory.html#sec-weak-ref-objects\" target=\"_blank\">ECMAScript\u00ae 2023 Language&nbsp;Specification<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/WeakRef\" target=\"_blank\">WeakRef &#8211; JavaScript | MDN<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/caniuse.com\/mdn-javascript_builtins_weakref\" target=\"_blank\">JavaScript built-in: WeakRef | Can I use\u2026<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/qiita.com\/uhyo\/items\/5dc97667ba90ce3941cd\" target=\"_blank\">WeakRef: JavaScript\u306b\u5f31\u53c2\u7167\u304c\u3084\u3063\u3066\u304f\u308b\uff08\u3064\u3044\u3067\u306bFinalization\u3082\uff09 &#8211; Qiita<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"st-ad-on-title\">\u30b9\u30dd\u30f3\u30b5\u30fc\u30c9\u30ea\u30f3\u30af<\/p>\n<div style=\"display:flex;justify-content:space-evenly;flex-wrap:wrap;\">\n  <div>\n    <iframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=labo0d-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=479816027X&#038;linkId=5ff9a62a923393e60b583862bdb0f4b1\"><\/iframe>\n  <\/div>\n  <div>\n    <iframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&#038;bc1=FFFFFF&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=labo0d-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=4873119227&#038;linkId=322dcf024d49878c7a21003f6b9bd22c\"><\/iframe>\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript \u3067\u300c\u5f31\u3044\u53c2\u7167\u300d\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"author":2,"featured_media":28879,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[62],"tags":[],"class_list":["post-33628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript"],"modified_by":"laboradian","_links":{"self":[{"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/posts\/33628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/comments?post=33628"}],"version-history":[{"count":25,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/posts\/33628\/revisions"}],"predecessor-version":[{"id":33848,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/posts\/33628\/revisions\/33848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/media\/28879"}],"wp:attachment":[{"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/media?parent=33628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/categories?post=33628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laboradian.com\/wp-json\/wp\/v2\/tags?post=33628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}