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)]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,350评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,375评论 2 17
  • 过完年,小猫学会了摇头,对不喜欢的会明确表示不约!但是我们问他任何带动词的问题,他也都是摇头,哪怕喜欢,就是不会点...
    喵大阅读 3,255评论 0 0
  • 曾经有一个人问我,如果你深爱的那个人离开了你,你会怎么办。 “如果有一天,我爱的人离开我,我只回答两个字,好...
    荷包蛋7阅读 2,415评论 0 0
  • 我喜欢女 喜欢你
    逐日的我阅读 799评论 0 1