// Array []
// 原型 prototype: 每个函数都有一个原型属性prototype,指向他的一个原型对象
// 每个类的实例 都可以通过 proto 找到他的所属类的原型对象
/*
* 构造函数模式; 创建一个构造函数;通过 new 去创建 这个构造函数(自定义类)的一个实例
* 这个实例的__proto__属性指向 这个构造函数(自定义类) 的 原型对象
* 这个原型对象上有一个constructor属性 指向 构造函数本身
*
*
* 所有的实例都是一个对象
* 所有的类 都是一个函数
*
* */
*
/*
* new 执行函数跟普通函数执行的区别
* new 执行 会在函数内部自动创建一个 对象 (this);函数执行完成之后;会把this 默认返回
* 如果手动修改 return 值; 若return的是个值类型;那么 默认return的 还是 this
* 若 return 的是个引用数据类型;那么返回的就是 这个引用数据类型
* */
function Person3() {
var name2 = 'zfpx';
this.name = name2;
this.age = 9;
// this.getName = function () {
// console.log(12)
// }
// return 9;
// return this;
// return {}
}
Person3.prototype.getName = function () {
console.log(this.name)
};
Person3.prototype.name = 'zhufeng';
var per = new Person3();
// var per3 = new Person3();
var n = Person3();//n
console.log(per); // {name,age}
per.getName();
/*
* per 是Person3(自定义类) 的一个实例
* 是实例的话就能调用 所属类原型上的方法和属性
* */