gpt4 book ai didi

javascript - 在对象实例化期间扩展 javascript 对象

转载 作者:行者123 更新时间:2023-12-02 16:42:22 25 4
gpt4 key购买 nike

我有一个 javascript 类库,它们使用 John Resig 的简单 Javascript 继承库相互继承 ( http://ejohn.org/blog/simple-javascript-inheritance/ )我的一个类(我们称之为parent)有许多子类(parent.child1parent.child2等),它们扩展了类并添加自己的方法。通常,我会通过

实例化一个子对象
ob=new parent.child1(ops)

但是,当我实例化一个 parent 对象时,创建选项哈希可以包含一个名为 type 的成员,它告诉我该对象实际上必须是一个 子对象。

ob= new parent({type:"child1"});

在对象创建过程中,如何确保创建的对象是parent.child1的实例?如果这是不可能的,我如何确保创建的对象至少具有 parent.child1.prototype 的所有方法和属性?

提前致谢

编辑:一个更好的例子是有一个名为 employee 的类,然后有两个继承自 employee 的类,名为 employee.engineer 和 < em>employee.admin

最佳答案

function Parent(options) {
if(options.type) return new Parent[options.type]();
}
Parent.prototype.foo = 'foo';
Parent.Child = function() {
this.bar = 'bar';
};
Parent.Child.prototype = Object.create(Parent.prototype);
Parent.Child.prototype.constructor = Parent.Child;

var obj = new Parent({type:"Child"});
obj instanceof Parent; // true
obj instanceof Parent.Child; // true
obj.constructor; // Parent.Child
obj.foo; // 'foo'
obj.bar; // 'bar';

关于javascript - 在对象实例化期间扩展 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392669/

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