非常に複雑な理由から、私はNode.JSの内部をよりよく理解するために研究しており、未知の目的の2つの機能を発見しました。V8のGetPrivateとSetPrivateをラップするNode.JSのgetHiddenValue関数とsetHiddenValue関数は何ですか?
これらは機能とアクセス方法です。 their native code declarationsから
process.binding('util').setHiddenValue
process.binding('util').getHiddenValue
、それは以下のV8機能をラップ明らかだ:
v8::Object::SetPrivate
v8::Object::GetPrivate
私は一種-のは、彼らが何ができるかを示して少しスニペットをも作りました。
'use strict';
var binding = process.binding('util');
var o = {};
binding.setHiddenValue(o, 7, 'testing123');
console.log(binding.getHiddenValue(o, 7)); // returns 'testing123'
しかし、私はこれらのいわゆる「隠れた値は」のためのもの、またはそれらはノードまたはV8で必要とされる理由をそうでないかを決定するもの上の任意のドキュメントを見つけることができませんしてきました。
誰もが本来の目的で明るい光を放つことはできますか?参考のため
、これらが表示されますが、あなたは(7がクラッシュするよりも高い)でデータを関連付けるために使用できる唯一の有効な値であることが:
alpn_buffer_private_symbol: 0,
arrow_message_private_symbol: 1,
contextify_context_private_symbol: 2,
contextify_global_private_symbol: 3,
decorated_private_symbol: 4,
npn_buffer_private_symbol: 5,
processed_private_symbol: 6,
selected_npn_buffer_private_symbol: 7,
文書化されていないので、それらを使用することは非常に悪い考えです。 :-) 1つのドットリリースから次のドットリリースに変わる可能性があります。 –
@ T.J.Crowder私はこれを理解しています。私の目的は非常に珍しいです。 :) –