繁体   English   中英

JavaScript:基于原型创建对象而不使用new + Constructor

[英]JavaScript: Creating objects based on a prototype without using new + Constructor

这可能吗?

我的想法:原型本质上是构造函数的属性(无论是本机构造函数,如Function,String或Object,还是您自己的自定义构造函数),只有'new'关键字能够利用构造函数及其原型来创建对象

我错过了什么吗?

你是对的,但现在在ECMAScript第5版中, Object.create方法能够使用另一个对象作为原型创建对象实例:

var proto = {foo: 1};
var obj = Object.create(proto);

在上面的例子中,将创建obj ,它将在[[Prototype]]内部属性中包含对proto的引用,并且:

obj.foo; // 1
obj.hasOwnProperty('foo'); // false

这个方法来自2009年12月批准的新规范,到目前为止我已经看到Mozilla JavaScript 1.9.3实现了。

现在你可以像Douglas Crockford所建议的那样模仿那个方法的行为:

if (typeof Object.create !== 'function') {
  Object.create = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
  };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM