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()支持有序的对象,
    不同的浏览器的排序规则也不同,
    因此想跨浏览器的话最好使用数组排序
  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/furuihua/p/13404501.html
Copyright © 2011-2022 走看看