• 初识对象


    • 面向对象的特征

      • 封装性、继承性、多态性
      • 对象是键值对的集合:对象是由属性和方法构成的 (ps:也有说法为:对象里面皆属性,认为方法也是一个属性)
    • 对象属性操作

        var student = {
            name: 'sunny',
            age: 20,
            number: '11034P',
            department: 'newEnergy',
            score: function(){
                return '成绩查询系统!';
            },
            job: function(){
                return '就业查询系统!';
            }
        }
        var arr = [];
    
        // .语法
        // .语法后面不能使用js中的关键字、保留字(class、this、function。。。)
        // .语法后面不能使用数字
        // .语法后面可直接执行方法函数
        console.log(student.name);
        console.log(student.score());
    
        // []语法
        // []内部必须用引号引入变量名 (student['number']
        // ["class"]、["this"]等保留字都可以随意使用
        // [0]、[1]、[2]也可以使用 ? 为什么obj[3]==obj["3"]
        // 甚至还可以这样用:["[object Array]"]  jquery里面就有这样的实现
        // 也可以这样用:["{abc}"]  给对象添加了{abc}属性
        console.log(student['age']);
        console.log(student['job']);
    
        // 添加属性
        student['[object Array]'] = 240;
        student['{object}'] = {'arts':85, 'sports': 95};
        for(key in student){
            arr.push(key);
        }
        console.log(student);
        console.log(arr);
        arr = [];
    
        // 修改属性
        student.gender = 'man';
        student['direction'] = function(){
            return '人工智能与图形操作';
        }
        for(key in student){
            arr.push(key);
        }
        console.log(student);
        console.log(arr);
        arr = [];
    
        // 删除属性
        delete student.number;
        for(key in student){
            arr.push(key);
        }
        console.log(student);
        console.log(arr);
        arr = [];
    
    • 获取对象长度的方法
      • 对象的长度不能用.length获取
      • Object具有一个keys属性,可以返回json对象的key的数组
      • Object可以使用in运算符
        var student = {
            name: 'sunny',
            age: 20,
            number: '11034P',
            department: 'newEnergy',
            score: function(){
                return '成绩查询系统!';
            },
            job: function(){
                return '就业查询系统!';
            }
        }
    
        var arr = [];
    
        arr = Object.keys(student);
        console.log(arr.length);
        arr = [];
    
        for(key in student){
            arr.push(key);
        }
        console.log(arr.length);
        arr = [];
    
        console.log('name' in student);
    
    • 对象的浅拷贝与深拷贝
        // 浅拷贝
        var student = {
            name: 'sunny',
            age: 20,
            number: '11034P',
            department: 'newEnergy',
            score(){
                return '成绩查询系统!';
            },
            job(){
                return '就业查询系统!';
            }
        }
        var simple = obj=>{
            let newObj = {};
            for(let key in obj){
                newObj[key] = obj[key];
            }
            return newObj;
        }
        var sunny = simple(student);
        console.log(sunny);
    
        // 深拷贝
        var student = {
            name: 'sunny',
            age: 20,
            number: '11034P',
            department: 'newEnergy',
            score: {
                arts: 95,
                sports: 85,
                program: 95
            },
            job(){
                return '就业查询系统!';
            }
        }
    
        var deepCopy = obj=>{
            var newObj = {};
            for(let key in obj){
                newObj[key] = (typeof obj[key] === 'object') ? deepCopy(obj[key]) : obj[key];
            }
            return newObj;
        }
        var sunny = deepCopy(student);
        console.log(sunny);
    
  • 相关阅读:
    位运算大集合
    一道百度面试题——位运算
    一道Google面试题——基数排序思想
    ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境
    Linux常用命令及Vim使用
    Gcc手册(转)
    C语言标准
    匈牙利游戏(次短路问题)
    高级打字机
    矩阵乘法
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/13548205.html
Copyright © 2020-2023  润新知