【1】JS中的值类型与对象

以下四种为简单值类型:

console.log(typeof(x));    // undefined
console.log(typeof(10)); // number
console.log(typeof('abc')); // string
console.log(typeof(true)); // boolean

函数、数组、对象、null 、new Number(10)都为对象;

console.log(typeof(function () { }));  //function
console.log(typeof([1, 'a', true])); //object
console.log(typeof ({ a: 10, b: 20 })); //object
console.log(typeof (null)); //object
console.log(typeof (new Number(10))); //object

【2】创建JS函数的三种方式

查看三种创建函数的方式

【3】JS-Tips

  • 除了简单值类型,其他都是对象;
  • 函数是一种对象;
  • 对象是函数创建的;
  • 函数都是由Function创建的;
  • Function创建了自身;
  • 原型(prototype)是一种对象;
  • 原型对象默认有一个属性–constructor ,该属性有一个引用,指向函数本身!!!
  • 每个函数都有显示原型对象prototype;
  • 每个对象都有隐式原型对象​​__proto__​​;
  • 对象和函数的原型指向一致!!!
  • 自定义函数(除了Function)的prototype都是由Object创建的,等于Object.prototype===​​Object{}​​;
  • Function函数的prototype是​​function(){}​
  • 一切函数的​​__proto__都是function(){}​​(因为函数都是由Function创建的);
  • 自定义对象(除了new Function)的​​__proto__​​​都是​​Object{}​
  • Function对象​​new Function()).__proto__​​​===​​function () {}​
  • prototype对象是由Object创建的,故​​Function.prototype.__proto__===Object.prototype===Object{}​
  • 但是​​Object.prototype.__proto===null​

【4】原型链图

JS-函数、对象与原型_JS
JS-函数、对象与原型_JS_02

【5】测试图

  • 自定义函数、Function、Object的​​__proto__与prototype​

JS-函数、对象与原型_JS_03

  • 自定义函数的原型链

JS-函数、对象与原型_JS_04

  • Function函数的原型链

JS-函数、对象与原型_原型对象_05