Js 使用new关键字调用函数和直接调用函数的区别
2020-07-08 本文已影响0人
ZH彪
调用经典的构造函数需要加new
function Person(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function () {
alert(this.name);
};
return o;
}
var friend = new Person("Nicholas", 29, "Software
console.log(friend);
Person函数创建了一个对象,并以相应的属性和方法初始化该对象,然后又返回了这个对象,除了使用new操作符且把使用的包装函数叫做构造函数
看到这里,我就将上面的例子的new关键字去掉,发现和原来结果一样。
而后,我写了一下几个例子,进行比较:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
alert(this.name);
}
}
var person=new Person("张三",20); //此处为 构造对象,构造对象的话,返回的新对象是由解析器自己生成的。
console.log(person); // 有new 函数内部的this指向实例本身 Person {name: "张三", age: 20, sayName: ƒ}
// var person = Person("张三", 20); //没有new 函数内部的this指向window
// console.log(person); //报错 person undefined 此处为普通函数调用,又没有给定返回值,出错。