CNode

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

Jjiyinyiyong发布于14 年前最后回复14 年前14 回复7364 浏览0 收藏

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

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

回复 (14)

A
a272121742#1·14 年前

想做什么

J
jiyinyiyong#3·14 年前
引用 a272121742想做什么

想学会折腾原型链

S
saber#4·14 年前

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

return o; }

I
island205#7·14 年前
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()
L
leizongmin#9·14 年前
function generate (fn) {
  return new fn;
}
J
jiyinyiyong#10·14 年前
引用 leizongmin

.. 这不科学..

L
leizongmin#11·14 年前
引用 leizongmin

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

J
jiyinyiyong#12·14 年前
引用 leizongmin

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

I
imzshh#13·14 年前
function generate = (ctor, args){
  var o = clone(ctor.prototype)
  ctor.apply(o, args)
}
参与回复
登录后即可参与回复。登录