目录
- 四个全局函数
- 公用属性
- 面试题
四个全局函数
number
1.var n = new Numbe(xxx)
2.var n =xxx
与1对比缺点:因为n不是对象, n.toString()
不能用
解决方法:临时转换 temp
String
1.var s = 'dadasfsafaa'
2.var s2 = new String(s)
生成一个hash
其中
s2.charAt(0) //获取某个索引对应的字符 —— API,等价于**s2[0]**
"s"
获取unicode编码,上面是10进制,下面是16进制
几个常用API
boolean
1.var f = false
2.var f2 = new Boolean(false)
所有对象皆是truey,f2是对象所以是truey。所以打印f2
object
1.var o1 = {}
//推荐用这种
2.var o2= new Object()
两个都是对象,完全没区别,但是不相等
公用属性
公用属性就是hash
Object.prototype —— object的公用属性
Object.prototype再往后就是null了
number的公用属性就是Number.prototype
number的公用属性的公用属性是Object.prototype(可参考上图)
同理,String和boolean的也是
注意:prototype是浏览器提前准备好的,无代码的时候就存在。我们用__proto__
来引用公用属性
关系:String.prototype
是 String 的公用属性的引用,防止它不被引用被浏览器当垃圾清理
s.__proto__
是 String 的公用属性的引用,来用它的
面试题
题目:下图1和2的区别是什么?
1是对象属性,2是函数属性
Function的prototype
和__proto__
互相引用,都指向同一个地址
Function.__proto__ ===Function.prototype