如何实现对象内部槽属性

问题描述 投票:0回答:1

我认识到一些 Javascript 对象具有一些用双方括号 [[ ]] 包围的内部槽属性,并且只能通过方法访问。

例如:

var str = new String('example');

检查变量

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

我的问题是:如何实现具有该行为的自定义对象?,具有带有 [[ ]] 包围的内部属性以及访问该属性的方法。

javascript node.js internal object-property
1个回答
1
投票

来自 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'); });
© www.soinside.com 2019 - 2024. All rights reserved.