JS 里的对象

Number

var n1 = 1 用这种
var n2 = new Number(1) 很少用
n1本来没有tosting方法,但是js之父把它设计成了 临时转换

temp = new  Number(n)  temp.toString() 

然后把temp干掉 这样 n1.toString()就是1了

var n1 = 1
n1.xxx = 2
n1.xxx // undefined  是临时对象 用完了就没了 

String

var s='dsafewfjiw'
var s2 = new String(s)
console.log(s2)

这样s2就是类似数组的样子,有length
s2.charAt(0) // d 获取某个索引的字符
s2.charCodeAt(0) 获取某个索引的字符的编码
'a'.charCodeAt(0) //97
'a'.charCodeAt(0).toString(16)//61(16进制 )

string的常用方法
'   username   '.trim()   //"username"
var s1 = 'hello'
var s2 = 'world'
s1.concat(s2)   //"helloworld"  原来的不变
s1.slice(0,2)  //"he"   包前不包后

Boolean

var f = false
var f2 = new Boolean(false)
if(f){console.log(11)}      //undefined
if(f2){console.log(22)}  //输出 22

上一篇文章讲了只有5个false 而对象不是false

Object

Number String Boolean Object这四种全局函数,前三种是把基本类型变成对象

共有属性

a1.toString === a2.toString //true
var n = new Number(11)Number特殊 它先引用number的共有属性( toFixed,toExponential,toString等方法 ),然后再去引用共有属性。
原型就是共有属性的意思。
String.prototype 是 String 的共用属性的引用 //指向共用属性,不指就跑了被回收了
s.__proto__是String 的共用属性的引用 //我要用这个共用属性
s.__proto__ ===String.prototype

烧脑环节

原型可以总结为下面的等式

var  对象 = new 函数 ()
对象.__protp__ ===  函数.prototype 

__proto__是对象的属性 prototype是函数的属性 它们都指向共用属性

因为原型的表达可以用上面的等式表达,那么:
var obj = 函数.prototype运用于等式中:obj(函数.prototype) .__proto__ === Object.prototype=>函数.prototype .__proto__ === Object.prototype

问题来了:函数是不是对象

其实函数是对象:
先看例子
var obj2 = 函数 //函数是不是对象,函数是对象(要么基本类型,要么是对象,函数不是基本类型,所以是对象)
运用总结的等式来写:

函数.__proto__ === Function.prototype    //函数是由function构造出来的
Function.__proto__ === Function.prototype // true
Function.prototype.__proto__ === Object.prototype  //true
函数的共有属性指向对象,所以函数是对象

你可能感兴趣的:(JS 里的对象)