JS 里的对象

作者: 小志1 | 来源:发表于2018-03-20 16:49 被阅读0次

    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 里的对象

        本文链接:https://www.haomeiwen.com/subject/xbsbqftx.html