1、全局对象:
以浏览器里面的window为例:
JS语言中,在ECMAScript标准里面全局对象叫做global,而浏览器是先于ECMAScript发表出来的,在浏览器里面全局对象叫做window;
window的属性:
1、EMCAScript规定的,共有的(不管是浏览器还是node.js都有的)标准库函数:
全局函数(对象):
1、parseInt
功能:
2、parseFloat
功能:
3、Number()
功能:
1、能把其他类型的数转为数字。//用对象属性来操作的时候JS隐形地对它进行 隐形地、临时的转为对象(temp),所以可以使用对象的属性来对 其进行操作,结束后临时的对象就消失了
2、可以声明一个number对象
Number() 创建临时对象4、string()
功能:
1、基本类型的String
2、可以创建一个string对象的哈希
String//创建的哈希表中有很多属性:
charAt(第几位) //表示第几位的字符
charCodeAt(第几位) //表示第几位的字符对应的Unicode编码(扩展:
1、'a'.charCodeAt(0) //a的10进制的Unicode码
2、'a'.charCodeAt(0).toString(16) //a的16进制的对应的Unicode码
)
trim //去掉字符串两边多余的空格
concat //连接两个字符串,举例:s1.concat(s2)
slice(0,3) //切后留下第一个到第三字符
replace //代替 举例:s-.replace('w','d')
5、Boolean()
功能:
Boolean下面的例子只打印2.因为对象都是true,而false是falsy值:
踩过的坑6、Object()
功能:声明对象建议使用第一种声明方法。
objectobj1 === obj2 //false 原因:两者虽然在Heap堆内存中都是空的,但他们的Stack栈内存中地址不一样;
【注】只要是Stack栈内存中的地址不一样都是严格不相等;推论:所有新声明的对象都是不相等,除非把一个对象的Stack栈内存中的地址赋值给另一个。
7、异步函数:window.setTimeout() //window.setTimeout(function(){}, 3000) 指定时 间后执行这个函数
功能:
2、特定浏览器才有的(chrome /firefox等):
全局函数(对象):
浏览器跟用户交互功能的四个函数:
alert //弹框提示
prompt //用户填东西
confirm //用户确认
console.log //开发者打印东西
document //文档 ;这个全局函数有自己的规范DOM,而DOM这个规范是由 w3C规定的
history //BOM
…………
2、原型链
原型与原型链:在这里我用全局函数公用属性来代替原型这个概念,每一个对象都有共同的属性:toString 和 valueOf 等属性,所以在内存中早先创建一个带有这两个属性的对象,每一个声明的对象都共同调用这个,这样不浪费内存。那么那么多创建的对象都怎么知道这个公用属性呢?因为每一个创建的对象Heap内存中都有隐藏的属性: __proto__,这个属性的值就是公用属性的值。因此我们可以知道,新声明的各属性之间不相等,也就是 obj1 === obj2 //false; 但是obj1.toString === obj2.toString //true;valueOf也相等……;
(1)普通对象:调用一个属性,直接指向公用的属性里面去找。
(2)其它类型的全局函数声明的对象:调用一个属性,首先看自己的Heap内存中有没有这个属性,如果有直接调用,如果没有就会再调用__proto__属性,指向所有对象公用的属性里面去找。(声明一点:为了不浪费内存,一种类型的数据对应的全局函数声明的对象都调用自己的__ proto__属性优先去调用这一类公用的属性,如果没有再调用这一类数据的公用属性里面的__proto__属性去调用公用的属性。即每一步都调用__proto__属性,去找下一个内存区。)
不同对象的调用属性原理【注】__proto__ 是在写对象的时候才有的,引用的protoytpe的功能,它不被调用的话会被GC;而prototype是浏览器自带的,每一种方法声明的对象都有的、是浏览器提供的,一直都有,不会被GC.举例:String.prototype是String的公用属性的引用(防止被GC);s.__prototype__是引用String的共用属性的,是用户写的对象调用的。
引用关系 引用关系+1对象—— 总结
__proto__ && prototype3、数据类型总结:
7中数据类型——number string boolean symbol undefined null object(object/array/function)
5个falsy值—— 0 NaN false '' undefined null
内存图——Stack Heap 基本类型与复杂对象的区别
这三个倒背如流能解决80%的数据问题啦!!!
网友评论