【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】原型链图
【5】测试图
- 自定义函数、Function、Object的
__proto__与prototype
- 自定义函数的原型链
- Function函数的原型链