JS原型&&闭包

学习总结JS原型&&闭包

一、 一切都是对象

先分析下数据类型

  1. 值类型

    • undefined
    • number
    • string
    • boolean
  2. 引用类型

    • 函数
    • 数组
    • 对象
    • null
    • new Number()

值类型的类型判断用typeof,引用类型的类型判断用instanceof.
一切(引用类型)都是对象,对象是属性的集合.

二、 函数与对象的关系

对象都是通过函数创建的

三、 prototype原型

每个函数都有一个属性叫做prototype。 这个prototype的属性值是一个对象,默认的只有一个叫做constructor的属性,指向这个函数本身。

1
2
3
4
5
6
function Fn() {}
Fn.prototype.name = 'taoge';
Fn.prototype.age = 99;
var fn = new Fn();
console.log(fn.name);
console.log(fn.age);

Fn是一个函数,fn对象是从Fn函数new出来的,这样fn对象就可以调用Fn.prototype中的属性。
因为每个对象都有一个隐藏的属性proto,这个属性引用了创建这个对象的函数的prototype。
即fn.(下划线)proto(下划线) === Fn.prototype。

四、 隐式原型

每个对象都有一个proto 称为隐式原型
每个对象都有一个proto属性,指向创建该对象的函数的prototype。
Object.prototype确实一个特例——它的proto指向的是null。
每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性。