导航菜单
  • 首页
  • 首页>前端万博manbext备用网址>JavaScript万博manbext备用网址

    JavaScript基础13:Object对象初了解

    我们常说“面向对象的编程”,在JavaScript中,对象就是最重要的内容。

    在老家常把谈恋爱说成“找对象”,那么这里的对象是一个人,在JavaScript中,几乎“所有事物”都是对象。

  • 布尔是对象(如果用 new 关键词定义)

  • 数字是对象(如果用 new 关键词定义)

  • 字符串是对象(如果用 new 关键词定义)

  • Date永远都是对象

  • Math永远都是对象

  • 正则表达式RegExp永远都是对象

  • 数组Array永远都是对象

  • 函数Function永远都是对象

  • 对象Object永远都是对象

  • 所有 JavaScript 值,除了原始值(number、string、boolean、undefined,null),都是对象。

    原始数据类型指的是拥有原始值的数据。原始值没有属性或方法。

    原始值是一成不变的,比如“school”这个字符串,3.14这个数字,它们的值是不变的。

    一、对象是变量

    常规的变量包含一个值,但是对象可以包含很多值。对象是有值的变量的集合。

    这些值以名称:值键值对(名称和值以冒号分隔)的形式写入。

    var person = {
    firstName:"John", 
    lastName:"Doe", 
    age:50, 
    eyeColor:"blue"};

    object对象中的变量名称被叫做“属性”。

    对象属性可以是原始值、其他对象以及函数。

    这里的函数就是对象的方法。是一个可以执行的动作。

    对象的方法就是包含了函数声明的对象属性。

    var person = {
    firstName:"John", 
    lastName:"Doe", 
    age:50, 
    eyeColor:"blue",
    fullName:function(){
        return this.firstName+" "+this.lastName;
    }};

    二、创建一个对象

    有不同的方法来创建对象:

  • 定义和创建单个对象,使用对象字面量。

  • 定义和创建单个对象,通过关键词 new。

  • 定义对象构造函数,然后创建构造类型的对象。

  • 在 ECMAScript 5 中,也可以通过函数 Object.create() 来创建对象。

    1、使用对象字面量

    这是创建对象最简单的方法。

    var person = {
        firstName:"Bill",
        lastName:"Gates",
        age:62,
        eyeColor:"blue"
    };

    2、使用new的方式创建

    var person = new Object();
    person.firstName = "Bill";
    person.lastName = "Gates";
    person.age = 50;
    person.eyeColor = "blue";

    出于简易性、可读性和执行速度的考虑,使用对象字面量的方式更好。

    三、对象是易变的

    因为对象它们是通过引用来寻址,而非值。

    不像原始数据类型,是值的传递。

    所以,把对象赋值给另一个变量, 并不是创建了对象的副本,产生了新的对象,而是只是把对象的地址给了新的变量,它们都共同指向同一个对象。

    var x = person;  // 这不会创建 person 的副本。

    对象 x 并非 person 的副本。它就是 person。x 和 person 是同一个对象。

    对 x 的任何改变都将改变 person,因为 x 和 person 是相同的对象。

    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
    
    var x = person;
    x.age = 10;           // This will change both x.age and person.age

    具体内容可以查看一下这篇文章关于堆内存和栈内存的分析。

    JavaScript基础12:函数传参

    四、访问属性和方法

    1、访问属性的两种方法

    objectName.property   
    objectName["property"]

    在点语法中,property属性名称是一个有效的 JavaScript 标识符,例如,一串字母数字字符,也包括下划线及美元符号,但不能以数字作为开头。比如,object.$1是合法的,而 object.1是无效不合法的。这就是为什么数组不能用点语法访问值的原因了。

    在[ ]语法中,property是一个字符串。该字符串不一定是一个合法的标识符;它可以是任意值,例如,"1foo","!bar!",甚至是 " "(一个空格),也可以是一个传递过来的变量。

    属性名称必须是字符串或符号 Symbol。这意味着非字符串对象不能用来作为一个对象属性的键。任何非字符串对象,包括 Number,都会通过 toString 方法,被转换成一个字符串。

    var object = {};
    object['1'] = 'value';
    console.log(object[1]); //value

    上述代码的输出为"value",因为 1 被类型转换为'1'。

    var foo = {unique_prop: 1}, 
    bar = {unique_prop: 2}, 
    object = {};
    object[foo] = 'value'; //被toString()转成了object["[object Object]"]="value"
    console.log(object[bar]); //value

    上述的代码的输出也是 "value",由于对象 foo 和 bar 都会被转成相同的字符串。在SpiderMonkey JavaScript 引擎中,这个字符串是 "[object Object]"。

    2、访问方法

    只能通过点语法访问对象的方法。

    objectName.methodName()


    点赞


    1
    保存到:

    相关文章

    发表评论:

    ◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。

    Top