zoukankan      html  css  js  c++  java
  • JavaScript之对象基础

    现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它。JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们称之为对象的属性,值称之为属性值。如果某个属性的值是函数,那么我们称这个属性是该对象的一个方法。

    一   JavaScript对象分类

             JS中对象大致可以分为3大类

      1、  本地对象

      这类对象是独立于宿主环境的对象,不因宿主环境的改变而有任何不同,它们由ECMAScript(JavaScript核心)提供并维护。

      Object

      我们称他为原始对象,JS中其他的本地对象都继承自他,他是所有对象的祖先,他的所有方法和属性都会出现在其他对象中。

      Function

      函数其实是功能完整的对象,他也有自己的属性和方法,我们使用function关键字定义的所有函数都属于该类。

      Array

      数组对象比较特别,因为它的键是从0开始的数字。并且是用中括号“[]”包裹的。

      String

      文本(字符串)对象。

      Boolean

      布尔对象。

      Number

      数字对象。

      Date

      时间对象。

      RegExp

      正则表达式对象。

      Error:EvalError( 全局eval()功能错误 ),RangeError( 值范围错误 ),ReferenceError( 引用错误 ),SyntaxError( 语法错误 ),TypeError( 值类型错误 )

      各种错误对象。这里不必深究这些对象,只需要知道有这些东西,调试的时候查询文档即可。

      注意,我们自定义的对象绝大部分最终都继承自 Object,所以它们也属于此范畴。

      

      2、  内置对象

      内置对象也是独立于宿主环境的,但它只有在程序被执行之前才出现。

      Global

      全局对象是预定义的对象,作为JavaScript的全局函数和全局变量的占位符,全局对象只是一个对象,而不是一个类,既没有构造函数也无法被实例化。

      学习基础知识阶段,大家不必详细了解构造函数相关知识,这里的重点是知道有Global这么一个对象即可。

      了解详情请移步W3school

      Math

      Math对象和Global一样,没有构造函数,也不能使用new实例化。它是专门用于执行数学计算的数学函数和数学常量的集合。

      

      3、  宿主对象

      所有由宿主实现的对象都属于该类,JavaScript中的宿主对象是Web对象,所有DOM和BOM对象都是宿主对象。关于它们,以后会专门讲解。

      4,另一种分类

      内置对象(上面的本地对象),宿主对象(同上),自定义对象(所有实例对象)。

    二   JavaScript对象的创建

             JavaScript中创建对象有4种常用方式:

      1、  字面量方式

    1 var obj = {
    2    name:"ren",
    3    age:12,
    4    say:function(){
    5         alert("hello,my name is " + this.name);
    6     }  
    7 };

      

      2、  Object()方式

    1 var obj = new Object();
    2 obj.name = "ren";
    3 obj.age = 12;
    4 obj.say = function(){
    5         alert("hello,my name is " + this.name);
    6     }

      

      3、  构造函数方式

    1 function CreateObj(){
    2     this.name = name;
    3     this.age = age;
    4     this.say = function(){
    5             alert("hello,my name is " + this.age);
    6         };
    7 }
    8 var obj = new CreateObj();

       

      4、Object.create()

    1 var proto = {name:'ren'};
    2 var obj = Object.create(proto);
    3 //proto将成为obj对象的原型,原型相关的知识将在以后详细介绍

    三   对象使用

      

      1,  使用对象的属性

     1 var obj = {
     2    name:"ren",
     3    age:12,
     4    say:function(){
     5         alert("hello,my name is " + this.name);
     6     }  
     7 };
     8 
     9 console.log(obj.name);//"ren"
    10 console.log(obj["name"]);//"ren"

           

       2,使用对象的方法

            接上面的obj使用

    1 obj.say();//"hello,my name is ren"
    2 obj.say;//ƒ (){alert("hello,my name is " + this.name);}
    3 //不带(),将返回函数的定义

      3,获取对象的属性   

      使用 keys() 方法获取对象的属性:

    1 Object.keys(obj); //['name','age','say']
    2 var arr = [1,2,3];
    3 Object.keys(arr); //['0','1','2']

      4,删除对象的属性或方法

        删除对象的属性或方法使用关键字:delete,返回true表示删除成功,false表示删除失败

    1 var obj = {
    2             name:"ren",
    3             age:12,
    4             say:function(){
    5                 alert(this.name);
    6             }
    7         };
    8 delete obj.name;//true
    9 console.log(obj);//{age:12,say:function(){alert(this.name);}}

      5,冻结对象

       很多时候,我们创建一个对象之后不希望它再被任何人以任何方式修改,这时候你可以使用Object.freeze()方法冻结它。

    1 var obj = {name:'ren'};
    2 Object.freeze(obj);
    3 obj.name = 'ner';//'ner'
    4 obj.age = 12;//'12'
    5 console.log(obj);//{name:'ren'}

      6,遍历对象

       遍历对象通过:for...in;

    1 for(var item in obj){
    2     console.log(obj[item]);
    3 }
    4 // 'ren','12',fn
  • 相关阅读:
    小程序 短信验证码 倒计时 变量作用域
    File syncing and sharing software with file encryption and group sharing, emphasis on reliability and high performance.
    图片合并与截断
    宽度分离
    无宽度准则
    linux系统/var/log目录下的信息详解
    Connection Phase Packets
    select version();desc mysql.user;
    mysql user password plugin
    Please read "Security" section of the manual to find out how to run mysqld as root!
  • 原文地址:https://www.cnblogs.com/ruhaoren/p/11344941.html
Copyright © 2011-2022 走看看