JS里的对象(笔记整理)
2018-11-14 本文已影响0人
阿小经
目录
- 四个全局函数
- 公用属性
- 面试题
四个全局函数
number
1.var n = new Numbe(xxx)
2.var n =xxx
与1对比缺点:因为n不是对象, n.toString()
不能用
解决方法:临时转换 temp
![](https://img.haomeiwen.com/i9351608/98e55f374eea25d8.png)
![](https://img.haomeiwen.com/i9351608/420923d5456f0b9e.png)
String
1.var s = 'dadasfsafaa'
2.var s2 = new String(s)
![](https://img.haomeiwen.com/i9351608/eae3ddfade4d8101.png)
生成一个hash
其中
s2.charAt(0) //获取某个索引对应的字符 —— API,等价于**s2[0]**
"s"
获取unicode编码,上面是10进制,下面是16进制
![](https://img.haomeiwen.com/i9351608/9dea19af071a0bfe.png)
几个常用API
![](https://img.haomeiwen.com/i9351608/7ca0eaf6e4e5b4cf.png)
boolean
1.var f = false
2.var f2 = new Boolean(false)
![](https://img.haomeiwen.com/i9351608/b922d5e81c47a165.png)
所有对象皆是truey,f2是对象所以是truey。所以打印f2
object
1.var o1 = {}
//推荐用这种
2.var o2= new Object()
两个都是对象,完全没区别,但是不相等
公用属性
公用属性就是hash
![](https://img.haomeiwen.com/i9351608/5fa94fa6bdbd5d09.png)
![](https://img.haomeiwen.com/i9351608/9067bdaa0517762a.png)
Object.prototype —— object的公用属性
Object.prototype再往后就是null了
![](https://img.haomeiwen.com/i9351608/26a5818f24c3acd0.png)
number的公用属性就是Number.prototype
number的公用属性的公用属性是Object.prototype(可参考上图)
同理,String和boolean的也是
![](https://img.haomeiwen.com/i9351608/cd9ea2fb1e78e975.png)
注意:prototype是浏览器提前准备好的,无代码的时候就存在。我们用__proto__
来引用公用属性
关系:String.prototype
是 String 的公用属性的引用,防止它不被引用被浏览器当垃圾清理
s.__proto__
是 String 的公用属性的引用,来用它的
![](https://img.haomeiwen.com/i9351608/1772ce5b4801ef8a.png)
面试题
题目:下图1和2的区别是什么?
![](https://img.haomeiwen.com/i9351608/f30953cdd88a4eab.png)
1是对象属性,2是函数属性
![](https://img.haomeiwen.com/i9351608/767410f80dfdb444.png)
Function的prototype
和__proto__
互相引用,都指向同一个地址
Function.__proto__ ===Function.prototype