🧁个人主页:个人主页
✌支持我 :点赞👍收藏🌼关注🧡
文章目录
- new操作符具体做了什么?
- 🎈创建了一个空的对象
- ✨将空对象的原型,指向于构造函数的原型
- 🍧将空对象作为构造函数的上下文(改变this指向)
- 🍄未使用new操作符时的this
- 🍄使用new操作符时的this
- 🌋对构造函数有返回值的处理判断
- 🍬返回基本类型
- 🍬返回引用类型
new操作符具体做了什么?
🎈创建了一个空的对象
function Foo(){
}
console.log(new Foo());
从上图中返回了一个对象,可以看出 Foo()为一个对象
✨将空对象的原型,指向于构造函数的原型
function Foo(){
}
console.log(Foo.prototype == new Foo().__proto__);
显示结果 为true
🍧将空对象作为构造函数的上下文(改变this指向)
🍄未使用new操作符时的this
function Foo(){
console.log(this);
this.name = '张三'
}
console.log(Foo());
从上述中我们可以发现 此时构造函数的this为整个window,而window对象下并没有name,所以报出undefined(函数Foo()并没有执行return)
🍄使用new操作符时的this
function Foo(){
console.log(this);
this.name = '张三'
}
console.log(new Foo());
此时,this即指向了 new Foo()这个对象
🌋对构造函数有返回值的处理判断
🍬返回基本类型
Number类型、String类型、Boolean类型、Null类型、Undefined类型、Biglnt类型;字符串类型、符号类型。
function Foo(){
this.name = '张三'
return true;
}
console.log(new Foo());
································
function Test(){
this.name = '张三'
return 111;
}
console.log(new Test());
可以看出:如果构造函数返回基本类型,则忽略返回值
🍬返回引用类型
Object、Array、Function
function Foo(){
this.name = '张三'
return {};
}
console.log(new Foo());
可以看出:如果构造函数返回引用类型,则new操作符 无效
🎉🎉🎉如有错误,请评论指出,thankyou~🎀🎀🎀
✨✨✨创作不易,如对您有帮助,欢迎给博主点赞收藏,给予鼓励哟💛