gpt4 book ai didi

JavaScript:在不使用 new + Constructor 的情况下基于原型(prototype)创建对象

转载 作者:可可西里 更新时间:2023-11-01 02:23:02 25 4
gpt4 key购买 nike

这可能吗?

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

我错过了什么吗?

最佳答案

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

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();
};
}

关于JavaScript:在不使用 new + Constructor 的情况下基于原型(prototype)创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com