zoukankan      html  css  js  c++  java
  • js对象小记

      js中每个对象都连接到一个原型对象,并且可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype。

      当我们创建一个新对象时,可以通过Object.create()函数来创建一个使用原对象为其原型的新对象。

    var a ={
        name:"liu",
        nickname:"lh"
    }
    var anotherA = Object.create(a);
    anotherA.nickname = "chu";
    for(var i in anotherA){
       console.log(i+":"+anotherA[i]);
    }

      发现输出的name与nickname顺序发生了改变

    nickname:chu
    name:liu

      因此这也是我们不推荐使用for in的原因。因为输出的顺序是不定的。

      然而,原型连接在更新时是不起作用的。当我们对新对象作出改变时,不会触及该对象的原型。当我们尝试去获取某个属性值,但改对象没有该属性,那么js会从原型对象中获取属性值。如果那个原型对象也没有该属性,那么就再去它的原型中寻找,直到终点Object.prototype为止。原型关系是一个动态关系,如果在对象创建之后再向原型对象添加属性,那么从该对象上仍然能访问到该属性。

    a.age = "21";
    anotherA.age;//21

      为了判断该属性是不是对象独有的属性,可使用hasOwnProperty方法,hasOwnProperty不会检查原型链。

    anotherA.hasOwnProperty("nickname");//true
    anotherA.hasOwnProperty("name");//false

      我们可以通过delete来删除对象的属性。这样对象的属性就再次指向了原型对象的属性值。

    delete anotherA.nickname;
    anotherA.nickname;//"lh"
  • 相关阅读:
    HDU 5213 分块 容斥
    HDU 2298 三分
    HDU 5144 三分
    HDU 5145 分块 莫队
    HDU 3938 并查集
    HDU 3926 并查集 图同构简单判断 STL
    POJ 2431 优先队列
    HDU 1811 拓扑排序 并查集
    HDU 2685 GCD推导
    HDU 4496 并查集 逆向思维
  • 原文地址:https://www.cnblogs.com/liuhanz/p/4792271.html
Copyright © 2011-2022 走看看