全局对象global (浏览器上叫window)
不管你在哪个网页都可以访问到这个对象---window
它有很多属性
global.parseInt()
golbal.parseFloat()
...
假设浏览器分给js一部分内存 如果内存里空空如也我们就什么也调用不了
每次浏览器生成的时候就生成一个global
[图片上传失败...(image-34d7a4-1515308406967)]
[图片上传失败...(image-db62a5-1515308406967)]
Number
var n = 1;
var n2 = new Number(1);
// n2是 Number对象 提供很多方法 可以 n2.toString() n2.toFixed(2)
//但是 n 也可以 n.toString() n.toFixed(2) 但是 n是一个基本类型 没有方法
[图片上传失败...(image-87b1b1-1515308406967)]
JS设计之初因为BOSS要求JS要像JAVA 作者为了满足老板的需求“长得像JAVA”
所以出现了 var n2 = new Number() 但实际上没有人用
JS实际用法 是 var n = 1;
但是它是怎么解决基本类型 调用方法的呢?
妙计:临时转换
var n = 1;
n.toString()
// 调用toString()的时候 产生一个临时的对象 temp
- step1 temp = new Number(n);
- step2 temp.toSrring();
- step3 方法调用结束后销毁 temp对象
这样我就永远不用使用new Number()去创建一个number对象 并调用其相关方法
调用过程
[图片上传失败...(image-62b6aa-1515308406967)]
基本类型的xxx是多少
[图片上传失败...(image-2afa3d-1515308406967)]
String对象
slice() // 切片方法 'hello'.slice(1,3) 输出 el 口诀包头不包尾
concat() //字符串拼接
trim() //去除首尾空格
Boolean对象
一个“坑”点
var b1 = false;
var b2 = new Boolean(false);
if(b1){console.log(1)} //不会打印1
if(b2){console.log(2)} //打印2 因为所有对象转换为boolean值都是true
Object对象
var o1 = { };
var o2 = new Object();
// o1和o2没区别 都是对象
//注意一点 凡是新声明的对象 都是不相等的 o1 !== o2
共有属性 prototype
不同类型对象都有一个toString() 和valueOf()
[图片上传失败...(image-fdd582-1515308406967)]
如果方法挂载到 对象上就会要出现很多的key
__proto__ //隐藏在对象里 特定的指向 该类型的共有属性
[图片上传失败...(image-a49dca-1515308406967)]
[图片上传失败...(image-8de820-1515308406967)]
原型链 ==> 这样一层一层向上指的过程 形成了一个链条
[图片上传失败...(image-c7298-1515308406967)]
prototype 就是共有属性
[图片上传失败...(image-f21026-1515308406967)]
String.prototype是 String的共有属性 (这里是防止它没有,系统生成的)
s.__proto__ 是String共有属性的引用 (这个是实际使用的)
烧脑部分
__proto__与 prototype
// var n = new Number()
// var b = new Boolean()
// var s = new String()
// var o = new Object()
[图片上传失败...(image-9f9f5e-1515308406967)]
var 对象 = new 函数()
对象.__proto__ === 函数.prototype
//烧脑的来了
// 函数.prototype也是一个对象
函数.prototype.__proto__ === Object.prototype
//再次烧脑 函数是不是一个对象 ==》是
// var obj2 = 函数
// obj2.__proto__ === Function.prototype
函数.__proto__ === Function.prototype
Function.__proto__ === Function.prototype
// Function.prototype也是一个对象
Function.prototype.__proto__ === Object.prototype
Function.__proto__ =-= Function.prototype //true
结论
对象.__proto__ === 函数.prototype
[图片上传失败...(image-d52f29-1515308406967)]