冴羽
冴羽
@youzaiyouzai666 我觉得这个更像是函数声明的问题。当函数声明出现在代码块中,javascript 引擎不会将其作为函数声明处理,而是处理成函数表达式。 所以,这段代码相当于: ```js var foo; foo(); if(true){ foo = function(){ console.log('1111'); } }else{ foo = function(){ console.log('22222'); } } ```
并没有什么区别吧,毕竟最后都是要更改原型的 --------------------------------------------- 以上是最初的看法,两者有很大的不同,欢迎下拉看两者之间的区别。
哈哈,添加的注释很赞 o( ̄▽ ̄)d
我也好想写React呐,不过React估计是第三个或者第四个系列,现在第一个系列还没有发布完呢,第二个系列估计要写20篇左右,写到React,估计都下下个月了……看来是赶不上这波撕逼的浪潮了~😂😂😂 --------------------------------------------- 实际上,过了一年都没有开始写 React 系列 T^T
@wcflmy 哈哈,被你发现了,我在模拟的时候,也发现这一点了,后来觉得反正主要目的是为了让大家了解 new 的原理,没有必要再写一句专门判断 null ,就没有写,不过使用你这种写法就不用多写那一句了,真的很赞!给你 32 个赞,哈哈~~~ o( ̄▽ ̄)d
@Allen3039 哈哈,类型判断加正则,大家这是各显神通呐~ o( ̄▽ ̄)d
@xdwxls 其实就是将 obj 的原型指向 Constructor.prototype,只不过@jawil 的写法中在 new 的模拟实现中又用到了 new 😂
@a1029563229 能提供下这段代码吗?
@strongcode9527 @a1029563229 @lzayoih 我也发现了这个问题,测试 demo 为: ```js function Otaku (age) {} Otaku.prototype.sayHello = function() { console.log('hello') } var person = objectFactory(Otaku, 'Kevin', '18'); console.log(person) person.sayHello() //??? ``` 如果使用 Object.create(null),person.sayHello 就会报错,使用...
@yh284914425 是的,本篇是希望通过模拟 new 的实现,让大家了解 new 的原理~