• 犀牛-6对象


    对象:字符串到值得映射;自有的属性;继承的属性。也称作关联数组。

    字符串,数字和布尔值:它们不是对象。当引用了它们的属性,js会调用new XXX()转为对象,引用结束,则临时对象(包装对象)会消失。对属性的赋值,会被忽略。也可以显示的包装对象。typeof 包装对象:object。没有实际的意义

    通过引用来操作对象

    var x={
      name:'sfp'
    };
    var y=x;
    x.name='wj';
    console.log('y.name:'+y.name);
    

    属性名为空字符串

    var x={
      name:'s',
      '':'sfp'
    };
    for(var key in x) {
      if(key==''){
        console.log(key+':'+x[key]);  //注意取值的形式,为什么不能用.呢?
      }
    }
    

    属性值可以使getter或setter函数

    每个属性都有属性特性:5之前都可写,可枚举(for in可输出),可配置(删除,修改)。

    对象的对象特性:prototype,class,extensible flag。

    内置对象,宿主对象(htmlelement,也为内置),自定义对象,自有属性,继承属性。

    历史原因:属性名为保留字,需加引号;最后一个逗号需要加上。属性名内有空格,连字符,保留字,都需加引号。

    null:没有原型,属性,方法,值。null instanceof Object:false,

    对象字面量创建的对象的原型为object.prototype;new Constructor()创建的对象的原型是构造函数的prototype。

    没有原型的对象:null,Object.prototype。内置构造函数和大部分自定义的函数的原型都是Object.prototype。

    Object.create():用原型来创建对象,是一个静态函数,不是提供给某个对象调用的方法。例1、Object.create(null):没有原型的对象,不继承任何属性和方法;例2、Object.create(Object.prototype):普通的空对象。

    .和[]的应用场景:事先不知道属性名时,可以使用[]来动态的更改:['address'+i]; 

    属性访问出错的处理方法:出错的情况:访问null和undefined的属性时,会报错。处理方法:var len=book && book.subtitle && book.subtitle.length。

    给null和undefined设置属性也会报错。给其他类型设置属性,也有可能出错(5 strict)。在三种场景下,给对象设置属性会失败。 

    删除属性的问题:delete不能删除继承属性。通过prototype的不能删除,如果是通过call()继承的呢?为什么就可以删除呢?

    function ClassA(p){
    	this.p=p;
    }
    function ClassB(x){
    	ClassA.call(this,x);
    	this.q='f';
    }
    var a=new ClassA('s');
    var b=new ClassB('s');
    //delete a.p;
    delete b.p;
    console.log(a.p);
    console.log(b.p);  //undefined
    

    推测:继承属性是在对象的原型对象中定义的属性,而p不是在ClassB.prototype中定义的,不是继承属性。我只是想看一下通过对象冒充继承的属性,可不可以。

    delete只是断开了属性和对象的联系,而不去操作属性内部的属性:a={p:{x:1}};b=a.p;delete a.p;结果是b.x依然是1。

    p127    

  • 相关阅读:
    牛人对IC验证的独特理解(转载)
    soc验证扫盲(转载)
    .vimrc
    matchit匹配
    格式化verilog/systemverilog代码插件
    gvim plugin管理
    .alias
    .cshrc
    get_result --perl
    run_regress --perl
  • 原文地址:https://www.cnblogs.com/wang-jing/p/3954397.html
Copyright © 2020-2023  润新知