JavaScript学习笔记 .5——对象的简单创建与使用

151 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

JavaScript————面向对象的语言

伴随变成项目规模的日渐增加,如今这世道一个语言(特别是前端语言)没有面向对象特性都不敢上市了。Javascript自然也具有优秀的面向对象机制,就让我们来看一看吧。

对象的简单创建

学过C++或者JAVA的都知道,这些语言一般都需要先构建一个,然后以类为模板来构建对象。JS不是这样的!JS的面向对象有点不一样,

首先它至少很好上手

  • 下列例子创建了一个对象:
var person = {
  name : {
    first : 'Evo',
    last : 'Lonation'
  },  
  age : 20,
  gender : 'male',
  //属性
  greetingTo: function(obj) {
    alert('Hi, '+obj+'! I\'m ' + this.name[0] + '.');
  }
  //方法
};

以上,我们创建了一个名叫person的对象,并赋给了它一些属性,如nameage

  • 此创建方法称为对象的字面量——手写对象。

    编写范式如下:

    var objectName = {
      member1 : Value1,
      member2 : Value2,
      member3 : Value3
    }
    
  • 另外从name变量可以看出,~~可以套娃,~~对象内部成员也可以是对象。

    var person = {
      name : {
        first : 'Evo',
        last : 'Lonation'
      }, 
    }
    
  • 同时可以对创建好的对象创建新的成员:

    person['school'] = 'BUAA'
    person.eat = function(food) { alert("Yummy yummy, '+food+' is dilicious.") }
    

可见JS对象的创建是十分简单且灵活的。


对象的表示方法

JS的对象成员有两种方式来调用(或创建):

  • 点表示法

      person.name.first
      person.name.last
    
  • 括号表示法

    person['age']
    person['name']['first']
    

    括号表示法的优点:可以接受变量作为名字,因此能够动态的去设置成员或者创建成员。

  • 同C++,JavaScript也有this指向自身,并且在成员方法中若想调用成员就必须使用this

    person.getLastname=function(){return name.last};❌
    
    person.getLastname=function(){return this.name.last};✔
    

当然一系列对象是具有一个同样的范式的,这时我们需要一个模板可以创建出很多基于这个模板的对象,在C++和Java等传统面向对象语言中称之为。为了过渡,我姑且也称JS中的构建方法为(尽管大相径庭):

“类”的构造

  • 类的构造参考如下方式:
    function Person(first,last) {
      this.name={
        first:firstName,
        last: lastName
      };
      this.greeting = function() {
        alert('Hi! I\'m ' + this.name.last + '.');
      };
    }
    
  • 通过类创建对象实例:
    var person1 = new Person('evo','lonation);
    var person2 = new Person('Jakie','Wells');
    

可见JS中的“类”就是一个构造函数,一个构造函数和一个类一一映射


总结

本节我们学习了Javascript的面向对象的一些简单特性,仅供萌新参考。Javascript面向对象的底层机制是一个很值得说道的东西,涉及到了Javascript的继承机制,我在下节会和大家好好谈一谈。