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的对象,并赋给了它一些属性,如name、age。
-
此创建方法称为对象的字面量——手写对象。
编写范式如下:
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的继承机制,我在下节会和大家好好谈一谈。