JS里的对象
全局对象global (浏览器上叫window)
不管你在哪个网页都可以访问到这个对象—window
它有很多属性
global.parseInt()
golbal.parseFloat()
…
假设浏览器分给js一部分内存 如果内存里空空如也我们就什么也调用不了
每次浏览器生成的时候就生成一个global
Number
1 | var n = 1; |
JS设计之初因为BOSS要求JS要像JAVA 作者为了满足老板的需求“长得像JAVA”
所以出现了 var n2 = new Number() 但实际上没有人用
JS实际用法 是 var n = 1;
但是它是怎么解决基本类型 调用方法的呢?
妙计:临时转换1
2
3var n = 1;
n.toString()
// 调用toString()的时候 产生一个临时的对象 temp
- step1 temp = new Number(n);
- step2 temp.toSrring();
- step3 方法调用结束后销毁 temp对象
这样我就永远不用使用new Number()去创建一个number对象 并调用其相关方法
调用过程
基本类型的xxx是多少
String对象
1 | slice() // 切片方法 'hello'.slice(1,3) 输出 el 口诀包头不包尾 |
Boolean对象
一个“坑”点
1
2
3
4 var b1 = false;
var b2 = new Boolean(false);
if(b1){console.log(1)} //不会打印1
if(b2){console.log(2)} //打印2 因为所有对象转换为boolean值都是true
Object对象
1 | var o1 = { }; |
共有属性 prototype
不同类型对象都有一个toString() 和valueOf()
如果方法挂载到 对象上就会要出现很多的key
1 __proto__ //隐藏在对象里 特定的指向 该类型的共有属性
原型链 ==> 这样一层一层向上指的过程 形成了一个链条
prototype 就是共有属性
1
2 String.prototype是 String的共有属性 (这里是防止它没有,系统生成的)
s.__proto__ 是String共有属性的引用 (这个是实际使用的)
烧脑部分
1 | __proto__与 prototype |

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16var 对象 = 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
结论
1 | 对象.__proto__ === 函数.prototype |










