JavaScript:基于原型创建对象,而不使用新的构造函数

这可能吗?

我的想法:原型本质上是构造函数属性(无论是本地构造函数,如函数,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();
  };
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...