美文网首页
JavaScript内置对象(22)

JavaScript内置对象(22)

作者: PhilongHuynh | 来源:发表于2017-12-13 11:47 被阅读0次
    JavaScript内置对象
    • 全局对象window
    • 全局函数
    • 公共属性隐藏在哪里
    • toString从哪里来(原型链)
    全局对象window

    全局对象(global,浏览器中也叫做window)
    atob() //将base64位编码转换为字符串
    btoa() //将字符串转换为base64位编码
    例如:global.parseIntglobal.parseFloat


    window中有公共的属性也有私有的属性。
    公共的属性是要求所有的浏览器都必须有。
    私有的属性。私有的属性为浏览器专有,可以为firefox所有,可以为chrome所有也可以为firfox和chrome共有。

    私有属性具体展示:
    window.setTimeout(function(){alert("3秒种后显示")},3000) //公共对象   三秒种后显示一个弹出框
    
    简单类型和对象的区别

    Number()的两种表达方法:
    (1)Number('1')
    (2)var n= new Number(1)
    var n1 =1var n2 = new Number(1)的区别
    n2里面的值可以通过valeOf()属性调用
    new的出现是JS之初,JS之父为了响应老板的需求是JS更像Java而特地制作出来的
    之后var n1=1引入了临时变量,使得var n=1 也可以使用toString(),valueOf(),这个变量使用完成就会被立即消失


    思考题:
    var n = 1;
    n.xxx = 2; 
    n.xxx=?
    

    (1)首先定义一个简单变量n-1
    (2)然后n.xxx赋予一个临时的哈希数组,使得n.xxx=2,其中可以公用valueOf(),toString()属性.这一句执行完则自动消除
    (3)n.xxx还是一个简单的变量,所以n.xxx的结果为undefined
    内存图详解:


    String()的两种表达方法:
    (1)String('1')
    (2)var n= new String(1)
    其中toString有很多API:
    (1)除去前后字符串的空格
    ' yseser '
    ' yseser '.trim() //'yseser'
    (2)连接字符串
    var s1='hello' var s2= 'world'
    s1.concat(s2) //'helloworld'
    (3)slice()切片
    s1.slice(0,2) //he 表示从第一个开始,共计两片
    s1.slice(0,3) //hel 表示从第一个开始,共计三片
    s1.slice(0,4) //hell 表示从第一个开始,共计四片
    (4)replace替换
    s1.replace('e','o') //'hollo 将S1字符串的e更换成o'

    boolean()表达方法类似
    也有toString(),也有valueOf()

    Object()表达方法
    (1)var o1 = {}
    (2)var o2 = new Object()
    虽然Object有两种表达方法,但是这两种表达方法不相同。


    简单的介绍了一下各种数据类型,而他们的表达方法如内存图所示:

    各种数据类型的共同点就是他们都有toString(),valueOf()接口,内存资源也稀缺重要不会允许他们这样浪费,于是这是就要使用共同资源,将所有的toString()``valueOf()存到一个公用资源中,需要使用时只需要给一个地址指向它就可以使用。也就是我们下面要提到的原型链。

    通过一个隐藏的属性__proto__指向共同的属性:




    不同类型的表达方法区别:

    JS内存结构图:

    通过上面我可以知道: Object对象是所有对象的共有属性。任意一条类型的线路从开始到最后就叫做原型链

    所以:
    s1.__proto__ === String.prototype
    s1.__proto__ === Object.prototype
    n1.__proto__ === Number.prototype
    n1.__proto__ === Object.prototype
    b1.__proto__ === Boolean.prototype
    b1.__proto__ === Object.prototype


    而结合着了解在无代码的情况下怎么实现:

    浏览器中(window)中的prototype永远存在,否则就会被垃圾回收!!!
    最后我们详解一下烧脑的proto与prototype的区别


    (1)表示对象的属性 (2)表示函数的属性 (1)(2)都表示同一个类型的属性
    而在上述考虑的属性中Function是比较特殊的一种

    相关文章

      网友评论

          本文标题:JavaScript内置对象(22)

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