zoukankan      html  css  js  c++  java
  • # JavaScript中的对象

    1. 对象的定义
    JS中的所有事物都是对象,对象是指带有**属性**和**方法**的特殊数据类型。

    JS自带很多内部对象:

    `String` `Date` `Array` 等

    对象的创建,属性及方法的使用方式

    //例如:
    
    var a; //创建空对象
    
    var stu = {}; //创建没有自定义属性和方法的空对象
    
    var obj = new Object(); //同上
    
    var func = (function(){ //构造函数式创建
    var v = 0;//私有属性
    var b = function(){};//私有方法
    
    return {
    
    }
    })();
    
    var user = {
    name:"小明",
    age:"18",
    run:function(){
    }
    };//创建一个有自义属性和方法的空对象
    user.name //小明
    user['name'] //小明
    user['school'] = '清华'// 赋值
    user.school = '清华'// 同上
    
    user.run();//调用
    
    user.prototype.stop = function(){}//添加新的方法
    user.stop();//调用

    2. 空对象的判断
    如果只是判断对象为`null`或者`undefined`

    var obj;
    if(!obj){
    console.log("对象为空");
    }
    

    如果是判断对象没有任何`可枚举`属性

    JSON.stringify(obj)=='{}';//大部分情况下也都可以用
    for...in能够遍历可枚举属性,包括prototype中的(继承来的)php知识网
    Object.keys(ES2015)值遍历·自有的·可枚举属性
    
    注意:不要用JSON.parse(str)=={}来判断,永远都是false,
    因为对象的值是引用类型的,引用地址不同就不相等
    

    但是对象的属性也可以通过设置`enumerable=false`为不可枚举的,那么通过上面的方法你就无法判断对象是否具有某个属性了
    3. 对象的相等判定

    一般比较相等都是比较`不为空`的两个对象的相等

    {}=={}; //false 对象是引用类型的,所以引用地址不同就不同
    

    所以一般我们比较两个对象是否`‘相等’` 都是比较它们是否具有相同的属性和方法,以及它们对应的值是否相等,而不是通过‘==’来比较。

    4. 对象属性的顺序

    顺序和你的添加顺序无关,
    ES6的 Map()支持有序的对象,
    不同的浏览器的排序规则也不同,
    因此想跨浏览器的话最好使用数组排序
  • 相关阅读:
    网络连接的小图标无法显示的解决
    ASP马免杀工具—ASP万能溶剂
    网络连接的小图标无法显示的解决
    Metisse:相当酷的窗口经管器
    Realtek ALC268集成声卡驱动问题在ubuntu下的办理方案
    mtPaint:绘制图标及像素图
    Solaris为单块网卡装备多个IP
    无比震荡 Fedora Linux把密码输出都落实起来
    Parted Magic-Linux 中的分区把戏师
    Linux和NTFS冲突
  • 原文地址:https://www.cnblogs.com/furuihua/p/13404501.html
Copyright © 2011-2022 走看看