一. new对象:
function Person(name, age) {
this.name = name;
this.age = age;
}
var person = new Person("Alice", 23);
二. new一个对象的四个过程:
1、创建一个空对象
var obj = new Object();
2、让Person中的this指向obj,并执行Person这个构造函数
var result = Person.call(obj);
3、设置原型链,将obj的__proto__成员指向了Person函数对象的prototype成员对象
obj.__proto__ = Person.prototype;
4、判断result的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。(因此调用call方法的时候可能返回了this,也可能没有返回)
if (typeof(result) == "object")
person = result;
else
person = obj;
三. 整体实例如下:
function Person() {
this.name = 'pcm'
this.age = 20
// return this //可有可无,因为在下面做了判断
}
let obj = new Object()
let result = Person.call(obj)
obj.__proto__ = Person.prototype
console.log(result)
if (typeof result === 'object') {
person = result
} else {
person = obj
}
console.log(person)
console.log('******')
console.log(person.name)