JavaScript构造函数例题:考察new的作用
-
先看代码示例
-
function Foo() { console.log(1) Foo.a = function () { console.log(2) } this.a = function () { console.log(3) } //改造一下 // return { // a(){ // console.log(6); // } // } } Foo.prototype.a = function () { console.log(4) } Foo.a = function () { console.log(5) } Foo.a();//5 let obj = new Foo();//1 obj.a();//3 Foo.a();//2
-
结果
- 正确答案:5 1 3 2;
- 我的第一反应答案是:5 3 2,忘记了1的打印。
- 小伙伴们:你们猜一下改造后的答案是什么呢 😄 ?
-
导致错误的原因
- 没有深刻理解 构造函数 new 的作用
-
-
构造函数中new的作用
(1)在内存中创建一个新对象。
(2)这个新对象内部的[[Prototype]]特性被赋值为构造函数的prototype属性。
(3)构造函数内部的this被赋值为这个新对象(即this指向新对象)。
(4)执行构造函数内部的代码(给新对象添加属性)。
(5)如果构造函数返回非空对象,则返回该对象;否则,返回刚创建的新对象。
-
感悟
- 基础知识还是理解的不深刻
- 抓紧搬出来红宝书和犀牛书 再撸 一遍基础
- 基础不牢,地动山摇。
生于忧患,死于安乐。 作者:孟子