扫码关注官方订阅号
function x(){x.name = "tom";}; var z = new x(); alert(z.name); console.log(z.name);
而把第一行代码改成this就弹出tom?
ringa_lee
你这问的比较大,拆分一下问题,主要是有几个点:
this是啥
构造函数是什么
new运算符做了什么
前两个问题请参阅《JavaScript高级程序设计》第六章第三个问题请参考规范:The new Operator
this 当前对象1、第一行中,x都未定义,故x.name均为'undefined',2、当用this时,this.name 即给当前对象属性name赋值,后面同理
也可以使用prototype来定义name属性:
function x(){x.prototype.name = "tom"}
通过new构造函数的方式创建对象时,会在函数中创建一个新对象,并将this指向这个对象,然后执行代码,最后将this返回;所以new x()就会就会创建一个对象,并给这个对象设置一个name属性,最后将这个对象返回给z。
说下第一种情况,对于直接fun.xxx=xx的这种设置,如果要用那就不能用new操作了,Console.log(fun.xxx)就可以得到。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你这问的比较大,拆分一下问题,主要是有几个点:
this是啥
构造函数是什么
new运算符做了什么
前两个问题请参阅《JavaScript高级程序设计》第六章
第三个问题请参考规范:
The new Operator
this 当前对象
1、第一行中,x都未定义,故x.name均为'undefined',
2、当用this时,this.name 即给当前对象属性name赋值,后面同理
也可以使用prototype来定义name属性:
function x(){x.prototype.name = "tom"}
通过new构造函数的方式创建对象时,会在函数中创建一个新对象,并将this指向这个对象,然后执行代码,最后将this返回;所以new x()就会就会创建一个对象,并给这个对象设置一个name属性,最后将这个对象返回给z。
说下第一种情况,对于直接fun.xxx=xx的这种设置,如果要用那就不能用new操作了,
Console.log(fun.xxx)就可以得到。