问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

js 对象是什么 太难理解了

提问网友 发布时间:2022-04-22 21:49
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
懂视网 回答时间:2022-05-14 20:56

本篇文章给大家带来的内容是关于js对象是什么?js对象的介绍(附代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

对象是什么

在JavaScript中,一个对象就像一个单独拥有属性和类型的实体。一个杯子作为一个对象,杯子有颜色、重量等属性。同样,JavaScript对象也有属性定义它的特征。
方法是关联到某个对象的函数,或者说,一个方法是一个值为某个函数的对象属性。
对象可以分为以下几类

  • 内置对象/原生对象

  • 就是JavaScript语言预定义的对象

  • 宿主对象

  • 是JavaScript运行环境提供的对象

  • 自定义对象

  • 就是开发人员自主创建的对象

    Object对象

    Object类型是引用类型。但Object类型是所有JavaScript中所有类型的父级(所有类型的对象都可以是Object的属性和方法)

    创建对象

    /*
    * 1. 对象的初始化器创建方式
    * var 对象名={
    * 属性名 : 属性值
    * 方法名 : function{
    *  方法体
    * }
    * }
    */
    var obj = {
     name : '九筒',
     age : 2,
     sayYou : function () {
     console.log('火锅')
     }
    };
    
    /* 2. 对象的构造函数方式
    * * 利用所有的引用类型创建对应的对象->具有具体的类型
    * var num = new Number;//number类型
    * var str = new String;//string类型
    * var boo = new Boolean;//boolean类型
    * * 利用Object作为构造函数创建对象
    * var 对象名 = new Object();
    * var 对象名 = Object();
    */
    var num = new Number();
    var str = new Storage();
    var boo = new Boolean();
    
    var obj2 = new Object();
    var obj3 = Object();
    
    /* 利用Object.create创建对象
    * var 对象名 = Object.create(null) -> 创建一个空对象
     var 对象名 = Object.create(obj)
     * obj - 表示另一个对象
     * 特点 - 当前创建的新对象拥有与obj对象相同的属性和方法*/
    var obj4 = Object.create(null);
    var obj5 = Object.create(obj);

    对象的属性

    定义对象的属性

    对象的属性就像是附加到对象上的变量

    /*对象介意定义多个属性
    * 属性之间使用逗号分开*/
    var obj = {
     name : '吴凡',
     age : 23,
     book : function () {
     console.log('暗毁')
     }
    };

    调用对象的属性

    /* 调用对象的属性
    * 对象名.属性名
    * 不适用于复杂命名的属性名称*/
    console.log(obj.name);
    
    /* 对象名[属性名]-通用方式
     适用于复杂命名的属性名称
    * */
    console.log(obj['name']);//属性名是字符串形式

    新增、删除、修改对象的属性

    var obj = {
     name : '火锅',
     variety : '比熊',
     age : function () {
     console.log('3')
     }
    }
     /* 新增对象的属性
     * 1对象名.新的属性名 = 属性值
     * 2对象名[新的属性名] = 属性值*/
    obj.col='白色';
    console.log(obj.col);//白色
    
     /*删除对象的属性
     * delete 对象名.属性名
     * delete 对象名[属性名]*/
    delete obj.col
    console.log(obj.col);//undefined
    
     /*修改对象的属性
     * 对象名.已存在的属性名 = 属性值
     * 对象名[已存在的属性名] = 属性值*/
    obj.name = '九筒';
    console.log(obj.name);//九筒

    检测对象的属性

    var obj = {
     name : '火锅',
     variety : '比熊',
     age : function () {
     console.log('3')
     }
    };
    console.log(obj.name)
    
    /* 1. 判断对象的属性值是否为undefined*/
    if (obj.name !==undefined){
     console.log('obj对象name属性存在')
    }else{
     console.log('obj对象name属性不存在')
    }
    
    /* 2. 判断对象的属性值,先转换为boolean类型*/
    if (obj.name){
     console.log('obj对象name属性存在')
    }
    
    /* 3. 利用in关键字进行判断*/
    if ('name' in obj){
     console.log('obj对象name属性存在')
    }else{
     console.log('obj对象name属性不存在')
    }
    
    /* 4. Object类型提供了hasOwnProperty()方法*/
    if (obj.hasOwnProperty('name')){
     console.log('obj对象name属性存在')
    }else{
     console.log('obj对象name属性不存在')
    }

    便利属性

    var obj = {
     name : '小薄荷',
     age : '0.3',
     variety : function () {
     console.log('萨摩耶')
     }
    };
    // 1.for...in语句
    for (var objAttr in obj) {
     // 通过对象属性或方法对应的值的类型进行区别
     if (obj[objAttr] instanceof Function) {
     // 当前是对象的方法
     obj[objAttr]();
     } else {
     // 当前是对象的属性
     console.log(obj[objAttr]);
     }
    }
    
    // 2.Object类型提供了keys()方法 - 只能遍历可枚举的属性
    var arr = Object.keys(obj);
    for (var v in arr) {
     var objAttr = arr[v];
     // 通过对象属性或方法对应的值的类型进行区别
     if (obj[objAttr] instanceof Function) {
     // 当前是对象的方法
     obj[objAttr]();
     } else {
     // 当前是对象的属性
     console.log(obj[objAttr]);
     }
    }
    
    // 3.Object类型提供了getOwnPropertyNames()方法 - 包括不可枚举的属性
    var arr = Object.getOwnPropertyNames(obj);
    for (var v in arr) {
     var objAttr = arr[v];
     // 通过对象属性或方法对应的值的类型进行区别
     if (obj[objAttr] instanceof Function) {
     // 当前是对象的方法
     obj[objAttr]();
     } else {
     // 当前是对象的属性
     console.log(obj[objAttr]);
     }
    }

    对象的方法

    调用、新增、修改、删除对象的方法

    调用、新增、修改、删除对象的方法和属性基本一样

    var obj = {
     name : '火锅',
     variety : '比熊',
     age : function () {
     console.log('3')
     }
    }
    
    /*调用对象的方法*/
    // 1.对象名.方法名()
    obj.sayMe();
    // 2.对象名[方法名]()
    obj['sayMe']();
    
    /*新增对象的方法*/
    // 1.对象名.新的方法名 = function(){}
    obj.name = function(){
     console.log('九筒');
    }
    console.log(obj);
    // 2.对象名[新的方法名] = function(){}
    
    /*修改对象的方法*/
    // 1.对象名.方法名 = function(){}
    obj.name = function(){
     console.log('九筒');
    }
    // 2.对象名[方法名] = function(){}
    
    /*删除对象的方法*/
    //1.delete 对象名.方法名
    delete obj.sayMe;
    // 访问对象中不存在的方法 -> 报错(TypeError: obj.sayMe is not a function)
    // obj.sayMe();
    // 2.delete 对象名[方法名]
    热心网友 回答时间:2022-05-14 18:04
    我来根据我的理解回答一下LZ的问题,如果有不对的地方还请多多指教!
    1.cc //这个是函数体本身,用在给函数添加或者调用属性一类的事情;
    2.cc() //执行函数体
    3.new cc() //创建一个cc函数的对象,如果你理解面象对象的话,就会很容易理解
    关于this
    this在函数体里的含义不相同,就function cc(){this.i="cc"};而言,如果没有创建对象,那这个this就代表window对象,这时候你如果执行cc();的话,window对象中就会有一个值为"cc"的属性i.如果创建了一个cc对象:var c=new cc();这时候this指的就是新建的对象c.
    关于prototype
    JavaScript的所有function类型的对象都有一个prototype属性.这个prototype 属性本身又是一个object 类型的对象,因此我们也可以给这个prototype 对象添加任意的属性和方法.
    关于this和prototype区别
    this的级别高于prototype,举个例子
    function cc(){this.i="cc"};
    cc.prototype.i="aa";
    alert(new cc().i);// i="cc"
    这时候如果把this.i="cc"去掉的话,则会显示"aa"

    关于new cc().prototype
    前面说过,function类型的对象都有一个prototype属性,而如果new cc().prototype这么写,就相当在cc()的对象上创建了一个名字为prototype属性,它的值为undefined,没有实际意义.

    cc={};这种形式就是创建了一个对象的简写,和cc=new Object();一样. 对象里有两个属性width和height.

    *arguments 的意思就是函数的实参,比如
    function cc(){alert(arguments[0]);}
    cc("参数一");

    cc.apply();的原形是cc.apply(func,args[]);意思就是在名为func的函数中加入一个cc函数,args是cc函数的参数,用数组形式表示. 执行完这条以后就可以在func的对象中调用cc函数了
    和apply()相似的是call().两个作用相同,只是call(func,arg1,arg2,...)里面的参数不是数组形式,要用逗号隔开写

    希望对LZ有所帮助,如果大家觉得有什么不对的地方请尽情提出!谢谢!
    热心网友 回答时间:2022-05-14 19:22
    js对象是属性的集合
    方法(Function) 数组(Array)对象(Object)都是对象
    对象都是由函数产生的,只是我们平时看到的这种写法
    var obj = {"a":"aaa","b":"bbb"}
    这种其实是一种语法糖,其实等价于 var obj = new Object();obj.a="aaa".obj.b="bbb";

    本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

    js里对象的key是什么 如何判断js中对象的类型 js对象和json的区别 什么是“JS”的内置对象? js由对象组成 这句话对不对? js对象和jquery对象的区别 什么是“js”的内置对象?? js对象有哪些类型,创建js对象的方式 Js中什么是对象,什么是方法 Js面向对象有几种方式? js对象的用法是什么? js对象有哪些 js中对象一般由什么组成? 求教苹果手机怎么剪切和合并音乐,有什么软件 iphone6 plus怎么用garageband剪辑铃声 苹果手机怎样剪辑歌曲? 苹果电脑,我系统是mac os x10.6.5的,有什么软件可以剪辑音乐的?就是取很长的音乐中一小部分。在线等 mac book air剪辑音频的软件是哪个 苹果电脑怎么用pp助手设置铃声 苹果笔记本用什么软件做图片处理?又用什么软件做视频处理和制作?还有用... javascript 对象、实例、函数、方法的区别 如何清除锅里的污垢锅糊了,里面的污垢如何清除 锅上面的污垢怎样去除? 如何清理大铁锅水垢? 炒锅背部的污垢用什么办法去除 锅背面的油垢怎么才能祛除 如何除掉锅底污渍 我的白鞋子变黄了怎么洗白 啊? 为什么白色的鞋子洗了后会有些变成黄色了? 白色鞋子晒黄了,有什么办法去除黄吗? 白色鞋子发黄怎么办?有什么好方法吗? 求助:白帆布鞋用漂白水漂黄了.怎么办? 白鞋子变黄后洗白的方法的有哪些? 白色的鞋子发黄要怎么能洗白啊? 为什么白色帆布鞋洗了以后会变黄? 我的白鞋子变黄了,这可怎么办呀? 手机腾讯视频是只能用qq和微信登录吗?那网上那些会员号怎么登录? 在拼多多上买的腾讯VIP怎么登录? 手机腾讯视频会员怎么登录 腾讯视频会员登录步骤 腾讯视频会员怎么登录账号
    Top