假设我已经创建了一个函数构造函数,例如
function Bar(){
}
var obj = new Bar();
Run Code Online (Sandbox Code Playgroud)
有没有让Object.prototype.toString.call(obj)回报之类的东西[object Date]?
ECMAScript5没有提供任何修改 [[Class]] 的方法:
该规范没有定义允许程序修改对象的 [[Class]] 或 [[Prototype]] 内部属性或将 [[Extensible]] 的值从 false 更改为 true 的 ECMAScript 语言运算符或内置函数。修改 [[Class]]、[[Prototype]] 或 [[Extensible]] 的实现特定扩展不得违反上一段中定义的不变量。
ECMAScript6 删除了 [[Class]] 内部插槽,但您可以使用 @@toStringTag Well-Known Symbol:
- 规范名称
@@toStringTag- [[描述]]
"Symbol.toStringTag"- 值和用途
一个字符串值属性,用于创建对象的默认字符串描述。通过内置方法访问Object.prototype.toString。
Bar.prototype[Symbol.toStringTag] = 'Date';
Object.prototype.toString.call(new Bar()); // "[object Date]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |