我认识到某些 Javascript 对象具有一些内部插槽属性,并带有双方括号 [[]] ,并且只能通过一种方法进行访问。
例如:
var str = new String('example');
检查变量str
时,我看到属性 [[PrimitiveValue]] 具有 example 值,但是由于该属性是内部属性,因此无法访问。只能通过方法toString()
来访问它。
我的问题是:我该如何实现具有该行为的自定义对象?它具有一个内部属性,该内部属性周围带有 [[]] ,并提供了一种访问该属性的方法
答案 0 :(得分:0)
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'); });