在不使用object.Create的情况下创建具有null原型的javascript对象
Create javascript object with null prototype without using Object.create
我需要找到一种方法来创建一个带有null
原型的JavaScript对象。
我不被允许使用Object.create
函数。
我尝试实例化像new Constructor()
这样的构造函数,但返回的对象总是有一个非null
原型,即使是Constructor.prototype === null
。
这样的对象已经存在,它是Object.prototype
,所以您的代码就像一样简单
x = Object.prototype
但是您不能创建这样的新对象,因为new
总是将proto设置为对象:
如果Type(proto)不是Object,请将obj的[[Prototype]]内部属性设置为15.2.4中所述的标准内置Object原型对象。@http://ecma-international.org/ecma-262/5.1/#sec-13.2.2
您可以直接操作__proto__
a = {}
a.__proto__ = null
var a = {};
a.prototype = null;
alert(a.prototype);
创建一个从另一个对象继承而不使用Object.create
的对象的常用方法是用所需的prototype
实例化一个函数。然而,正如您所说,它不适用于null
:
function Null() {}
Null.prototype = null;
var object = new Null();
console.log(Object.getPrototypeOf(object) === null); // false :(
但幸运的是,ECMAScript 6引入了类。上面的方法也不会直接起作用,因为ES6类的prototype
属性是不可配置和不可写的。
但是,您可以利用ES6类可以扩展null
这一事实。然后,不进行实例化,只获取类的prototype
:
var object = (class extends null {}).prototype;
delete object.constructor;
console.log(Object.getPrototypeOf(object) === null); // true :)
相关文章:
- 数组在递归方法中设置为null
- 使用“;这个“;JavaScript原型方法中的关键字
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 引用类变量中的原型方法
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 如何从对象的原型方法访问JavaScript对象属性
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 来自文本输入null的html javascript变量
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- php代码在textbox更改事件上显示null
- Node.js中的JavaScript原型对象效率
- Uncaught TypeError:对象原型在Symfony 2中只能是Object或ExtJS为null
- 在不使用object.Create的情况下创建具有null原型的javascript对象
- requireJS Object 原型可能只是一个 Object 或 null - jQuery
- 原型、Object.prototype和Object.create为Null
- 将函数原型设置为null对新创建的javascript对象没有影响
- 未捕获的类型错误:无法读取属性'原型'使用Openerp 7.0时为null
- 未捕获的类型错误:对象原型在ember.js上只能是Object或null
- Node.JS对象原型在Redis中只能是object或null