是否可以创建一个包装函数MyFunction
,当使用new
进行调用时,如
instance = new MyFunction();
确实返回相同的对象,就好像调用网站SomeOtherFunction
没有new
?
instance = SomeOtherFunction();
(我已经查看了Proxy
,但看起来他们还没有得到Chrome的支持。)
事实证明,呼叫点呼叫MyFunction
是这样的:
var instance = Object.create(MyFunction.prototype);
MyFunction.apply(instance, [/* arguments */]);
// `instance` is supposed to be initialized here
答案 0 :(得分:0)
我认为这就是你要找的东西?请注意,Jan Dvorak提到,您只能返回对象。
function SomeObject() {
return Construct();
}
function Construct() {
return { 'name' : 'yessirrreee' };
}
console.log(new SomeObject())
答案 1 :(得分:0)
您可以尝试这样的事情
function MyClass() {
}
var ob = new MyClass();
答案 2 :(得分:0)
我认为这些问题需要更多背景 我建议你阅读有关higher order components的内容,但在你更好地澄清到你想要完成的内容之前,我无法帮助你。
我真的不知道你的代码是什么样的,但这里有一些建议 无论哪种方式。我的猜测nr2就是你要找的东西:
// 1
function MyFunction() {
this.__proto__ = SomeOtherFunction()
}
function SomeOtherFunction() {
return {
foo: function() {
return 'bar'
}
}
}
var fn = new MyFunction()
fn.foo()
// 2
function MyFunction() {}
MyFunction.prototype = SomeOtherFunction()
function SomeOtherFunction() {
return {
foo: function() {
return 'bar'
}
}
}
var fn = new MyFunction()
fn.foo()
// 3
function MyFunction() {}
MyFunction.prototype = SomeOtherFunction.prototype
function SomeOtherFunction() {
function Foo() {}
Foo.prototype.foo = function() {
return 'bar'
}
}
var fn = new MyFunction()
fn.foo()