/**
* 在js这门语言中,一切都是对象,继承Object Function
* 一个对象一旦创建(通过构造函数),就当是造一个盘古出来,开天辟地第一人。
* 盘古一旦出来,天生有神通。有一个prototype的属性神通。
* 这个prototype属性指向盘古的小宇宙(原型对象),
* 也可以理解为prototype就是盘古的原型对象
* 但是呢这个小宇宙只要constuct属性(最强大招),没啥其他能用神通。
* 咱们可以在prototype上自定义一些神通上去(属性和方法)
* 而constuct包含个指针指向盘古的prototype,也指向盘古。(盘古是构造函数,可创建实例)
* 咱们呢,可以通过new的方式(构造函数)造一些人,就用盘古当模子,造人,
* 这些人指向的就是盘古的原型对象(constuct指针指向的就是prototype),或者prototype对象。
* 实例化的对象(人)和盘古还是有一些区别的,这些人没有prototype,
* 也不能再被其他人当做模子创造实例化对象,没盘古这么牛逼,
* 但是有__proto__(隐式原型)或者[[prototype]](IE下,标准)
* 而__proto__指向的就是盘古的小宇宙(原型对象),也是这种指向关系的证明。
* 而人通过这种关系,都能用盘古的大招。
* 紧接着咱们再看下,人有__proto__,那盘古有没有呢,盘古从哪来呢,
* 咱们发现盘古也有,他指向的是谁呢,Object.prototype。
* 而原型链就是这种指向关系,通过这种指向的关系,咱们可以发现一层一层往上找,最终找到null(混沌)。
*/
var pangu = function(){
};
pangu.prototype.huqi = function(){
console.log('创造风和云');
};
pangu.prototype.pi = function(){
console.log('分开天和地');
};
var person1 = new pangu();
var person2 = new pangu();
console.log(person1.pi);//分开天和地
console.log(person2.pi);//分开天和地
person1.pi = function(){
console.log('劈柴');//重写方法
};
console.log(person1.pi);//劈柴
console.log(person2.pi);//分开天和地
/*************TODO 2、关于Object Function*************/
/**
* 1、js中一切皆对象,是因为所有的起源都指向了Object.prototype
* 2、Object.prototype延伸出个内置函数Function.prototype
* Function.prototype是个函数工厂,一切函数都来自这里
* Function.prototype指向Object.prototype
* 3、Object和Function都是对象,都指向Object.prototype,可直接定义负责属性
* Object和Function也是函数,可直接Function()执行
* 因为它们都是从内置工厂里面出来的,有函数的特性
*/