如何实现对象内部插槽属性

时间:2018-08-17 03:29:29

标签: javascript node.js internal object-property

我认识到某些 Javascript 对象具有一些内部插槽属性,并带有双方括号 [[]] ,并且只能通过一种方法进行访问。

例如:

var str = new String('example');

检查变量str时,我看到属性 [[PrimitiveValue]] 具有 example 值,但是由于该属性是内部属性,因此无法访问。只能通过方法toString()来访问它。

我的问题是:我该如何实现具有该行为的自定义对象?它具有一个内部属性,该内部属性周围带有 [[]] ,并提供了一种访问该属性的方法

1 个答案:

答案 0 :(得分:0)

From this shim on Github

var SLOT = require('internal-slot');
var assert = require('assert');

var o = {};

assert.throws(function () { SLOT.assert(o, 'foo'); });

assert.equal(SLOT.has(o, 'foo'), false);
assert.equal(SLOT.get(o, 'foo'), undefined);

SLOT.set(o, 'foo', 42);

assert.equal(SLOT.has(o, 'foo'), true);
assert.equal(SLOT.get(o, 'foo'), 42);

assert.doesNotThrow(function () { SLOT.assert(o, 'foo'); });