跳到主要内容
CNode

怎样用 JS 自身实现一遍 new ?

社区
Jjiyinyiyong发布于 14 年前最后回复 14 年前
1474140

比如一个函数, generate() , 使得下面两个表达式意义相同:

b = new a;
b = generate(a);
查看回复

回复 (14)

I
island205#1314 年前
generate = (ctor, arg...)->
    o = {}
    o.__proto__ = ctor.prototype
    ctor.apply o, arg
    o

class Dog
    constructor:(@name)->
    eat:->
        console.log "#{@name} is eatting" 

generate(Dog, "dogg").eat()
S
saber#1014 年前

function generate (ctor){ var o = {}; ctor.call(o); ctor.proto = ctor.prototype;

return o; }

J
jiyinyiyong#914 年前
引用 a272121742想做什么

想学会折腾原型链

A
a272121742#814 年前

想做什么

I
imzshh#514 年前
function generate = (ctor, args){
  var o = clone(ctor.prototype)
  ctor.apply(o, args)
}
J
jiyinyiyong#414 年前
引用 leizongmin

@leizongmin 昨天看 JS 的原型链看得烦来... 我就觉得明明好东西, 直接接口做明显一点不就好了, 搞这么复杂

L
leizongmin#314 年前
引用 leizongmin

这个问题本来就是闲得蛋疼才想出来的

J
jiyinyiyong#214 年前
引用 leizongmin

.. 这不科学..

L
leizongmin#114 年前
function generate (fn) {
  return new fn;
}

参与回复

登录后即可参与回复。登录