note022js里的对象

全局对象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)]

你可能感兴趣的:(note022js里的对象)