代码如下:
function poiont(){
this.x = '111'
this.y = '222'
return this.x + this.y
}
let pit = poiont()
console.log(x) // 111
console.log(pit) // 111222
let pit2 = new poiont()
console.log(pit2) // {x:'111',y:'222'}
直接调用函数
如果是普通的直接调用函数的话,这里要注意:这里的this则指的是window,调用函数之后就相当于创建了一个公共的变量x与公共的变量y。然后最终的返回结果为:111222。
然而函数外面是可以直接打印出x值来,所以这块要注意变量的污染。如果你只是一个普通函数,调用完之后只需一个返回结果,尽量不用用this。
用new调用函数
用new调用函数的话,这里的会返回一个对象。而这里的this所指的x与y则为new完之后的对象属性。也就是pit2的值为{x:111,y:222}。
如果函数里面没有this则直接返回一个空对象{}
最后还一个要注意的区别,函数里面有返回值,如果是对象的话,这里new完之后的结果则是你返回的值,如果不是对象则自动按以上两点返回对象。不会理会你的返回值。如下案例,返回值则{name:'名称'},结果与直接调用函数的结果是一样,并且其中添加的this.x与this.y属性也都不存在了
function poiont(){
this.x = '111'
this.y = '222'
return {
name:'名称'
}
}
let pit2 = new poiont()
console.log(pit2) // {name:'名称'}