首页 新闻 会员 周边 捐助

js中构造函数使用new创建对象时,this与新建对象关系是怎样的?

0
[待解决问题]

JavaScript高级程序设计(第3版)
P144其中(2)所表达的意思。与我的理解有所出入。
-------------------------------引用高程内容 start---------------------------------------

英文解释
To create a new instance of Person, use the new operator. Calling a constructor in this manneressentially causes the following four steps to be taken:
1. Create a new object.
2. Assign the this value of the constructor to the new object (so this points to the new object).
(将构造函数的this的值赋给新的对象)
3. Execute the code inside the constructor (adds properties to the new object).
4. Return the new object.
一个构造函数
function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function()
{
alert(this.name);
};
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
------------------------------引用高程内容 end--------------------------------------


关于使用new关键字调用构造函数的步骤,以下是我的理解。
var newobj = {}; //首先创建一个新的临时对象
newobj.call(newobj ); //在新对象的作用域中执行构造函数。也就是将newobj赋给this。而书上说的正相反。“将构造函数的this的值赋给新的对象”。如何理解这句话?
用call解释第二行其实不妥。但call的功能的过程与我想表达的就是过程一致。
call显示的表达了调用函数的对象。这在我看来就是在设定函数中this的值。也就是this = newobj
而不是"this = 新对象"。这点是否正确?

spacecode的主页 spacecode | 菜鸟二级 | 园豆:202
提问于:2018-04-27 21:52
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册