美文网首页
原型与原型链

原型与原型链

作者: xvyabin | 来源:发表于2018-12-06 15:52 被阅读0次

    全局对象global (window)

    window下的属性分两种:一种是ECMA Script 规定,一种浏览器私有(window)

    ECMA Script 私有
    parseInt alert(弹框)
    parseFloat prompt(用户填写)
    Number() consode(开发者工具)
    String() confirm(确认)
    Boolean() document(文档)
    Object() history
    ... ...

    全局函数

    Number

    var n = new Number(1); //这是一个对象,有自己的属性。
    var x = 1; //这时x一个基本类型。
    x.toString() //以n不同的是:这时浏览器会声明一个临时变量temp,将x作为number对象赋值给他。
    var temp = new number(x);
    temp.toString();// 与n不同的是,执行完后temp就会被删除;
    x.xxx = 2; //可以的
    x.xxx //x.xxx===undefined,因为xxx是存在temp的,上一句的temp执行完后就被删除,所以xxx也被删除了

    String

    var n = String("xyb")
    var n1 = new String(n)
    n1[0] //'x'因为String()对象有hash的属性
    n[0] // 'x'也能调用这个属性,但n实质没有属性,这个原理和上面Number一样

    Boolean

    var b = false; //false
    var b1 = new Boolean(false); //true
    if(b){console.log('true')};
    if(b1){console.log('true')}; // true
    //只会输出b1,因为所有对象都是true!!

    Object

    var o1 = {}
    var o2 = new Object()
    o1 和 o2 没区别
    o1 === o2 //false,因为比较的是地址,而地址不同

    公用属性(原型)

    所有对象都有 toString 和 valueOf 属性,那么我们是否有必要给每个对象一个 toString 和 valueOf 呢?

    明显不需要。

    JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象)

    然后让每一个对象的 __ proto__ 存储这个「公用属性组成的对象」的地址。

    proto和prototype的区别

    window里存放obj、num…这几个对象,对象里的prototype属性里存了它们原型的地址,在你写:var n = new Number(1); 就会把Number.prototype里的地址放入n的proto属性里

    相关文章

      网友评论

          本文标题:原型与原型链

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