原型与原型链

全局对象

window的属性

number()
标准里面叫做global 浏览器里面叫做window

window属性主要分为:
ECMAScript规定

例如:parseInt parseFloat 等必有函数


私有(根据浏览器各有不同)

例如:
alert(弹框提示)
prompt(用户填写)
comfirm(确认)
consde(开发者)
document(文档)代表你可以对文档所做的一切操作
history(浏览器相关)等


以及已经存在的Number、String、Boolean、Object等对象

声明一个Number对象

1、Number('任何东西')它会尝试把它变成一个Number
2、var n = new Number(1) 它会把1变成一个对象
假设:

var n1 = 1
var n2 = new number(1)
image.png
image.png

但是var n= 1不能toString,因为基本类型是没有属性的
怎么解决呢?
临时转换:
声明一个临时对象temp,n.toString()实际上是temp.toStiring(),然后将temp.toStiring,作为n的toString的值,然后干掉temp


image.png

内存图:


image.png

两种方法声明一个String字符串

1、直接写
var s = 'asdasdasd'
2、new Stiring
var s2= new String(s)
他们的区别是:第一种是基本类型的String,它直接存在stack里面,第二种是变成对象之后的一个hash

image.png

它里面还有很多属性
image.png

例如
charAt 获取某一个索引对应的字符
image.png

charCodeAt 获取某一个索引对应的字符的编码
image.png

获取相对于字符的十六进制Unicode码


image.png

连接两个字符串为一个字符串,得到 三个字符串


image.png

声明Boolean的方式

1、var b = true
2、var b2 = new boolean(ture)


声明对象的方式Object

1、var o1 ={}
2、var o2 = new Object{}
一般用第一种 因为要短一些
两种没有区别,但是不相等(对象和对象之间都是不相等的,因为内存地址不同)


公用属性(原型)

image.png

number和obj的 共有属性,__ proto __属性指向当前对象的原型对象。
所有对象都有自己相对应的共有属性


image.png

同时Number、String、boolean等对象还有它们的特有公用属性,所以它比Object要多一个公用属性库,并且会先访问它们的原型(公用属性库),然后都指向Object的共有属性,最后指向null.


image.png
__ proto __ 与prototype
111

prototype是浏览器准备的公用函数,__ proto __ 是用来引用公用函数的

o1.__ proto __ === Object.prototype 就是所有Object的共有属性,是把prototype的地址
赋给__ proto __ 属性了
Number、String、Boolean等同理
n1.__ proto __ === Number.prototype
相对应的n1.__ proto __ .__ proto __ === Number.prototype
意思是把Object.prototype的地址赋给Number的proto属性了

var 对象 = new 函数();

函数可以是Number、String、Boolean、Object

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

推荐阅读更多精彩内容