gpt4 book ai didi

javascript - 修改使用Object.create()创建的对象的原型(prototype)

转载 作者:行者123 更新时间:2023-11-28 20:30:13 24 4
gpt4 key购买 nike

var base = function() { };
base.prototype.doStuff = function() {
console.log(1);
};

var foo = Object.create(new base());
console.log(typeof foo); //object
foo.doStuff(); //1

http://jsfiddle.net/xmYQn/

我知道有一些类似的问题,但我找不到这个问题的答案。

这可行,但是如果我希望 foofunction 类型,以便我可以向其原型(prototype)添加属性,该怎么办?换句话说,让它继承base原型(prototype)的方法,并与自己的原型(prototype)合并?

最佳答案

Object.create(new base());

这会创建一个新的普通对象,该对象继承自 base 实例(继承自 base.prototype 等)。你几乎不需要这样的东西。

I want foo to be of type function

然后将其定义为函数:

function foo() {}

…so that I can add properties to its prototype?

现在你可以做到了。

let it inherit the methods from the base prototype and merge them with its own prototype?

没有太多“合并”。但是您可以创建一个继承自 base.prototype 的新对象,将其设置为 foo 的原型(prototype),然后在其中添加您的属性:

foo.prototype = Object.create(base.prototype); // of course, anything that was
// previously set on foo.prototype
// is now lost
foo.prototype.constructor = foo;
foo.prototype.doOtherStuff = function(){…};

然后做

var fooInstance = new foo;
fooInstance.doStuff(); // 1
fooInstance.doOtherStuff();

关于javascript - 修改使用Object.create()创建的对象的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585879/

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